Sunday, November 02, 2003

Telirati Newsletter #18

Now here is a truly interesting bit of Windows and Java history: Visual J++. Visual J++ could have been a lot of things. It could have been .NET delivered two years earlier. It could have made Java relevant to Windows desktop applications. It could have made .NET more widely used by giving it a head start.

Instead, Sun succeeded is suing Visual J++ out of existence. This delayed the use of the Visual J++ class libraries - which are where most .NET ideas were first hatched. This prompted Microsoft to redouble their efforts and, as a result, .NET is much more than the Visual J++ class libraries. But now Microsoft's impact on server applications and an active and interconnected set of Internet-distributed systems has been blunted by Linux.

What did Sun get out of this? Not much.

Newsletter #18 Can Microsoft redefine Java?

In previous newsletters I have mentioned Java because it an important development:

Java is the most interesting challenge to Microsoft’s hegemony since the Macintosh.

Sun has, so far, not committed as many errors as Apple did when Apple frittered away the Mac’s advantages.

Java is likely to be important in creating and delivering a lot of software in the future.

Java can solve some sticky multi-platform problems, and it has some advantages in creating computer telephony systems.

Java is a delight to code in. It is C++ designed by an individual, not a standards committee.

So the question of whether Microsoft can redefine Java is a key question: If Microsoft cannot assimilate Java into the set of tools used by Windows programmers to create Windows software, the only other choice is to stand astride progress in Java - a much more brittle and hard to defend position. But doing this is no walk in the park. What does it mean to assimilate Java? How to overcome the inevitable negative response of people who find the simplicity of Java a refreshing break from the mounting complexity of COM and the Windows APIs? How do you, in practical terms, hijack the product direction of someone else’s set of APIs? There have been several attempts to provide alternative or cross-platform object libraries for Windows programming and all failed. Apple’s developer tools group at one point thought they could take their development tools cross-platform and become the development environment of choice for Windows – no need to ask what they were smoking. Why should Microsoft expect to succeed in steering some other direction for Java than that chosen by Sun?

There are other reason to think it unlikely that Microsoft could succeed in creating an alternative development path for Java. The class hierarchies for Java were created to be part and parcel of Java. There is no non-object-oriented interface to anything in Java, so there seems to be no practical way to create alternatives to what Sun, Java’s creator, sees fit to be the complement of classes underlying Java software. On top of this, there is some distance between the concepts of multi-threading in Java and Windows, among several other architectural divergences. The stage was set for any attempt at diverting Java onto some other track to turn into a first rate train wreck. On top of all this there is a need for Microsoft to make their class libraries simpler and more productive.

Surprise! Microsoft may pull it off. The Windows Foundation Classes and Visual Java 6.0 are an astoundingly credible attempt at what seemed like a doomed mission. Not only is it very possible that Microsoft will succeed in creating a branch of Java oriented toward Windows, Microsoft may well have come up with solutions to a number of other problems as well. Like the serpent uttering the promise “et eritis sicut dii, scientes bonum et malum� Microsoft offers to expand the minds of Java programmers in interesting and productive new directions, among which temptations:

A clear shot at producing applications in Java that will look good, perform well, and have all the capabilities expected of modern desktop productivity applications. Programmers who use Microsoft’s Java will not end up like Corel, Oracle, and Lotus, with Java-based products that are meritorious but not complete or competitive.

An answer to the problem: Visual C++ is too complex and Visual Basic is too wimpy. Java is now a full member of Microsoft’s language pantheon. And it has important characteristics, like pseudocode, JIT compilers, garbage collection, and a relative lack of legacy baggage, that make it an ideal choice for lots of developers now using VC++ and VB.

The first manifestation of Microsoft’s ability to simplify programming with a better class hierarchy. The Windows Foundation Classes make Windows programming easier than the MFCs or AFCs. Programmers willing to accept Microsoft’s vision for Java get these goodies first.

The best tool for exploring new user interface models. The WFCs are the best tool now available for realizing the future of user interfaces. By enabling the manipulation of DHTML, the WFCs provide the first object model, the first real architectural skeleton, for the creation of applications with a Web user interface. The importance of this cannot be understated. It is well and good to say, as I have in these newsletters, that the desktop metaphor is being replaced by Web-oriented user interface philosophy. But without an underlying software architecture for programs that work by manipulating components of hypertext documents, it all remains speculation and experimentation that is destined to be discarded. Microsoft has now shown the way.

In addition to what VJ and the WFCs have accomplished already, they indicate some interesting future directions: imagine applications delivered from servers that run on any Windows computer, be it a PC, or a CE machine with one of a handful of RISC CPUs. Write once, run on Windows may sound facetious, but right now, where else do you plan on running your software? It is quite likely that the future will find Windows everywhere – in your car, in your stereo, your TV, your wallet, your telephone handset – are you IP telephony people listening? Imagine an IP telephony handset that really is plug and play, which really requires no setup and administration to deliver a rich applications environment. Microsoft may end up not only assimilating Java, but relying on it to implement the only practical way to deliver software to networked Windows CE platforms, based on a variety of microprocessors, scattered throughout our consumer products.

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