Home
Archives
About us...
Advertising
Contacts
Site Map
 

ruby in steel

 

Visit the Bytegeist Archives...

bitwise technical editor Dermot Hogan has managed and developed global risk management systems for several major international banks and financial institutions. He is known for his sunny disposition and his jovial personality (he claims).

In this month's Bytegeist, Dermot asks: Who are the winners in Microsoft's war on Java? Linux, IBM and Google to name but three…

 

Bytegeist Smells the Coffee...

Last month I just sort of threw in the remark that “Java was never much of a threat to Microsoft”. That’s a fairly bold statement – and certainly goes quite a bit against the received wisdom of a few years back, and also, incidentally, of today.

I’m not sure of the exact history of Java (there’s a reasonable summary on Wikipedia) but I think you can safely say that it wasn’t designed to do what it has, in fact, ended up doing: being the stuff that holds the business logic between a database and web servers. Though to be fair, it’s also widely used in mobile phones, which is a bit closer to its original intentions.

But how Java got to that position is quite interesting – and while I believe it was never much of an actual threat to Microsoft, Microsoft’s perception of the Java threat has had profound consequences. You could write a book on the subject of how Java found its place. And yet the explanation of how it arrived at its present location is, in my view, quite simple: it boils down to the architecture of web servers and, yes, Microsoft.

In the mid '90s, when the web was starting to take off, Intel and the PC architecture were simply not powerful enough for large web servers. The best architectures were Unix on Sun’s Sparc, Hewlett Packard’s PA-Risc or the IBM equivalent. And there wasn’t a language suitable for web server development. Apart from Perl, that is – but Perl vs. Java and Sun’s slippery propaganda is another story.

The main characteristics of Java that made it suitable for web servers were that it was platform independent (mostly), it had managed memory and it wasn’t from Microsoft. Platform independence isn’t actually that critical. Not many end users moved an entire application from, say, Sun boxes to IBM machines; but it was important for application vendors. Being able to sell your product into several different hardware bases rather than just one was a big plus. Managed memory is important if your applications have to run 24/7. A memory leak in Visual Studio or Opera is annoying but not critical; you just shut it down every so often and restart. But in an online banking application? I don’t think so.

“Microsoft is like a huge shark. If you look around the shark, you won’t see too many decent sized fish. They’ve been eaten…”

And so we come to Microsoft…

Now when you get to Microsoft, you have to consider effects other than technology. Sort of like IBM: in IBM’s case you can find that IBM has directors on the board of the company you are trying to sell into. Which can make life difficult if your product isn’t based on IBM hardware. That happened to me once. With Microsoft, the effect is different. Microsoft is like a huge shark moving in the sea. If you look carefully around the shark, you won’t see too many decent sized fish. There are small fish like pilot fish and remoras – but very few middle sized ones. They’ve been eaten.

Basically, if you are a medium sized company developing a software product in the Microsoft sphere, you have to be very careful that you aren’t doing expensive market research for Microsoft. Let’s say, for example, that I decide to produce a Visual Basic 6.5 (see last month’s column). Well, after spending a million dollars or so, I finally get the thing out the door. If it’s a failure, then I (or my backers) have lost a million bucks. Tough. But if it’s a success, then Microsoft is likely to step in with a Visual Basic 6.6; my Visual Basic 6.5 goes down the pan and I’ve lost my million bucks. Very tough.

So it’s important that software is developed in an area where Microsoft isn’t. That’s why Java took off on the web servers – Microsoft just wasn’t there. This is independent of the technical merits or otherwise of Java. In my view, Java is a general purpose language of no special distinction – a bit like C# right now. Java will get the job done as will many other languages. Whether it’s the best language to use is quite a different argument.

But on the PC, Java had no advantages. The PC is Microsoft’s absolute fiefdom, so Microsoft wasn’t going to go out of its way to make life easy for Sun. Also Java was (and is) slower than compiled C++ code. Even with today’s decently fast PCs, just ask how many Microsoft products like Office or Visual Studio are written in C# - there are none as far as I know. Much more important, though, with Java you had to program to a different API specification. You could program to the Windows API, but it wasn’t exactly encouraged by Sun. Sun’s early windowing API implementation sucked, the quality was terrible and it was a fairly steep learning curve. And as for portability – where were you going port your nice commercial portable Java application to? A Macintosh with 3% market share? Or desktop Linux – where nobody pays for anything on principle? Get real.

And so Java on the PC died. But its ghost has lingered on, haunting Microsoft and influencing the strategic direction of Microsoft’s products.

In general over the last few years, the technical push has been away from building ‘fat’ clients running on a PC with say, a Visual Basic front end and a database back end, to a three-tier architecture with a thin-client browser front end, business logic running on the server and a database on a different box. Now this has nothing to do with Java: Perl will do. As will Ruby on Rails. All you need is something that runs on the server that implements the business logic. And that will run under Unix.

“Microsoft has failed to enable its tools for Unix where the real business opportunities lie…”

Unix is still the operating system of choice for servers. It’s an area that Microsoft has signally failed to address either with its software products or indeed with any other coherent ideas as far as I can see. It’s not just that one variant of Unix - Linux - is ‘free’. That’s really not a consideration for a lot of companies – the costs of the Oracle database, datacentre hardware and support staff completely outstrip the cost of the operating system. It’s simply that Linux/Unix is a Microsoft-free zone and so that’s where tool and application companies will tend to develop their products. Look at Google – it runs on clustered Linux boxes. Microsoft didn’t even see Google coming since it was totally fixated on Java at the time.

So, on the one hand, you have Microsoft developing a Java-like language, C#, because Java is a ‘threat’ and completely losing the thread on Visual Basic. And on the other hand, you have Microsoft failing to enable its tools for Unix where the real business opportunities lie – and which IBM has grabbed with both hands. To repeat: the task for Microsoft isn’t to build a clone of Java to see off Java on the desktop; it’s to build a toolset that enables people to build applications that run in a Unix environment – and interoperate smoothly with the PC environment.

As far as I can see, that just isn’t happening. We’ve still got the strange situation of people developing Java code on a PC that that has to be tested and run in a completely separate environment. The only example I’ve personally seen at close hand was certainly not a model of being on-time and on-budget. Microsoft’s argument is that if you use Microsoft server products you won’t end up in this situation. Well that’s true to a large extent. But do you really want to be in the firm embrace of a company who can’t be trusted even to maintain its own products? I’d want to think long and hard about that.

 

January 2006

Bytegeist Archives

 


Home | Archives | Contacts

Copyright © 2006 Dark Neon Ltd. :: not to be reproduced without permission