Saturday, December 20, 2003

Telirati Newsletter #29

In 1998, the idea of Java becoming a threat to the Windows desktop environment was, already, dead. Now Java is the dominant langauge for creating mobile applications for mass-market handsets. Back then, desktop Java died, in part, for lack of a "home" platform. Now the question is whether the 450 million telephone handsets shipped each year provide such a home. J2ME - the mobile variant of Java - has been used mainly for games, and Java is not tightly integrated into any mobile handset OS, with the exception of SavaJe. This is surely a topic for blog posts to come!

Telirati Newsletter #29: Who killed Cock Robin?

No! Not the ice cream parlor! (Though that would make another study in bad management.) I mean why is Java as a serious threat to the Windows platform all but dead?

It was a simple and beautiful idea: Start from scratch. Build a language. Build a computing environment with system services and user interface services. Without all the baggage of history, how could Java fail to be more elegant and wonderful than Windows?

When I first saw Java, this idea was tremendously appealing. I felt almost as I felt on seeing the first Macintosh. I saw not an incremental improvement, but a leap big enough to make a difference. Here was a credible attempt, sufficiently bold, to unseat Microsoft from dominance.

Java was also linked to the Internet through applets, which offered a glimmer of a software future where software arrives when needed, serves the user, and disappears before making a maintenance nuisance of itself. This future will arrive, but not in the form Sun intended.

Why has Java fallen so far short of challenging Windows in any serious way? It has fallen much shorter than the Mac OS, and Mac OS has the burden of past failure on its shoulders. Why is Java relegated to the uninteresting role of providing a plausible way to modernize software development on a range of medieval IBM systems, plus NetWare, for which software development is only incrementally less painful than the Spanish Inquisition.

The answer is: Java lacks an iMac. The iMac is a pleasure to contemplate. It captures what you can do when you control both hardware and system software (like actually make USB popular, something Intel and Microsoft have labored long and hard at without conclusive results). The iMac is wonderful even without the next generation of Apple OSs, and it will fuel upgrades to the new OS when it arrives.

Java does not have an iMac. Java does not even have a Cobalt (a nifty Linux-based server box). Java has got squat. Why is this lack of a compelling native platform fatal to a language who’s fundamental dogma is non-nativeness in the form of “Write once, run anywhere?”

The trouble is that the dogma is defective. Not enough people care about writing once, running anywhere. Everyone who has succeeded in selling desktop software sticks to the more practical belief system that can be summed up thusly: “Write it for the platform.”

Without a native platform this is what cannot be said to potential Java software developers (imagine, for a moment, there is a really neat Java computer): “The reason you should write Java programs, and stick to Sun’s view of the correct set of user interface classes, is that we have this nifty Java computer here. On it, your programs will run marvelously well, and look stunning. We guarantee to keep it that way by continuing to develop new and better Java computers. So while we have only 5% market share now, we will be doing much better in the future. And, to top it all off, your code will run on all those Windows computers, too.” Instead, all you get is a compromise position: Windows compatibility.

Sun could not even muster the sense of direction to revamp application development and user interface on Sun workstations running Solaris to use Java. Likely NetWare will make better use of Java in managing NetWare than Sun will in managing Solaris. While I do not know if any serious discussion took place on the matter, Java could have become a supercharged form of AppleScript, able to script other applications and create new ones. But this would mean adopting Apple’s user interface classes and becoming platform-specific in such an implementation.

The irony is that becoming a platform-specific language is Java’s fate: A better Delphi than Delphi, Windows-specific, and the optimal middle road between Visual C++ and Visual Basic. Microsoft will end up successfully assimilating Java into the MicroBorg, where tendrils of COM technology will ensure Java is inextricably intertwined.

Why did this happen? Was it timidity in taking on ever-cheaper PCs? Was it development projects gone bad? I do not know. But the result is that Java has no home base, no native country. And this prevents Java from ever having a chance, as a language and environment together, of changing personal computing. Too bad.

Copyright 1998 Zigurd Mednieks. May be reproduced and redistributed with attribution and this notice intact.