Microsoft clearly wants to keep developers in the Windows fold. The heart of the matter is Java's status as an applications platform, not as just an alternative language competing with C++, Visual Basic, or any other 4GL.
J/Direct is optional --developers can use it or ignore it. Developers who use J/Direct reclaim Windows-specific functionality that is not available in pure Java. Of course, developers must sacrifice portability for power. An application dependent on J/Direct will not run on other platforms without modification. It's a classic double-edged sword, but at least developers get to make the choice.
Contrast this choice with the effect of Microsoft's refusal to support the JFC in its Internet Explorer browser and future versions of the Windows operating system. Developers who want to write Java applications that run on Windows and other platforms must either ignore the JFC and rewrite much of the functionality it provides, or insure that the JFC is installed separately on Windows platforms. Actually, Microsoft wants developers to build Java applications on its own Application Foundation Classes (AFC). AFC is currently a Windows-only solution, and like J/Direct, it locks Java developers into Windows.
J/Direct is Microsoft's way of saying "We want you to stay in Windows, and we'll reward you with improved functionality if you stick with us." In contrast, withholding JFC says to developers, "If you really want to run Java applications elsewhere, we're going to make you work harder to run them on Windows, too."
Microsoft's introduction of J/Direct attacks the viability of Java as a ubiquitous platform. One of Java's most compelling promises is that the Java Virtual Machine (JVM) can, in theory, run the same applets in any Java-enabled browser on any operating system. In effect, the JVM subsumes the application host role traditionally played by the operating system. But in order for this theory to work in reality, the JVM must be at least as capable as the operating systems it supplants. For Java to fulfill its potential as a platform, it must eliminate the need for J/Direct. For now, Microsoft is using J/Direct to demote Java from a platform to a programming language.
Microsoft argues that JFC makes Java a competing operating system. Without splitting hairs over the definition of a platform or an operating system, I'll agree that Java is certainly a platform for running applications, and that a platform like the JVM competes with full-fledged operating systems in the eyes of developers. I think the JFC makes Java a stronger platform, but it was already a platform before JFC. Why is Microsoft just acknowledging this now? If Java is a competitive platform or operating system, why didn't Microsoft refuse to license Java or distribute a JVM? Microsoft's Web site proclaims that "Microsoft is committed to providing developers with the tools and technologies they need to create great Java applications."
(See www.microsoft.com/java/newsinfo.htm) Clearly, the sentence should have continued with "that run on Windows."
Microsoft also says that its license agreement with JavaSoft does not require Microsoft to distribute JFC. Legal squabbling like this merely hurts developers. If JFC is not the letter of the law, I say it is at least the spirit. Let developers choose JFC or AFC based on technical merit, not legal technicalities.
Finally, Microsoft officials also claimed that shipping JFC would add unnecessary bloat to Windows. JavaSoft counters that the JFC weighs in at a hefty 1.5MB. To paraphrase a famous congressional budget quote, a megabyte here, a megabyte there, and pretty soon you're talking real disk space. Those shiny new 4.6GB DVDs are just in time.
I don't think there is anything wrong with using J/Direct or AFC to build more capable Windows applications using Java as a programming language if the developer has no interest in running the applications on non-Windows platforms. Let's face it, Windows is the dominant desktop operating system and this constraint will be quite palatable for many developers. But I also think that Microsoft should fully support JFC and any part of Java that developers need to build Java applications, including Java applications that run on non-Windows platforms. That's not self defeating if Microsoft believes that its alternatives are better and more compelling. If so, then what does Microsoft have to be afraid of? Let developers decide.
Online Addendum: I just learned about the Java Lobby (www.javalobby.org), a new organization of developers who also urge Microsoft to support a full implementation of Java. -- Maurice Frank, September 26, 1997.