All products featured on WIRED are independently selected by our editors. However, we may receive compensation from retailers and/or from purchases of products through these links.
As part of its strategy to fit Java into Redmond's world, Microsoft gave Java a more direct path to the heart of the Windows platform today.
With its new version of Visual J++, Microsoft will give developers the option to tap features specific to the Windows operating system as they create new applications.
But since the new software is meant for a single platform, Windows, the news drives a wedge deeper into Java's identity. Is Java a language that will let application developers "write once, run anywhere," or is it just another development language? Or both?
The heart of today's announcement is the "Windows Foundation Classes" - a library of tools for Java developers to make calls directly to functions native to the Windows OS - just as conventional programming languages like C++ do.
"What [Microsoft] is doing is creating a set of class libraries that encapsulate J/Direct," said Seybold Group analyst Anne Thomas. "J/Direct provides a direct interface into the Win32 API [application programming interface] - and if you are looking to build a Windows application in Java, this is a very powerful tool."
Microsoft's new Windows classes are sure to intensify the spotlight on Java's split destiny. As Microsoft continues to fold Java into its corporate strategy, it will likely escalate the tug of war that Java-creator Sun Microsystems has taken Microsoft into the courts over.
However, Thomas said that Redmond's latest move is "absolutely in line" with the spirit of its license agreement with Sun.
This new capability of Visual J++ 6.0 - released today in a "preview version" - comes in the form of a new Windows-specific component, the Windows Foundation Classes (WFC). Where developers have typically used a language like C++ to build native Windows applications, they can now do so in Java.
A Java application's behavior can be linked to any or all Windows functionality through the full array of the system's application programming interfaces (APIs). Performing like a native Windows application, a Java program enjoys all the same interface features (buttons and other graphical components, for example), stability, and robustness as those coded in C++, Microsoft says.
"Anything you can do in a Windows app you can now do with WFC," said Microsoft's Charles Fitzgerald, program director of the company's Internet client and collaboration division.
But since Java is a computing language famed for its very ability to run across a wide array of computing platforms - thereby making developers less dependent on one dominant operating system like Microsoft's Windows - some say this represents an attempt to undercut Java's cross-platform potential.
"This is all about 'Do you want it to just run on Windows and if you do - do you want to restrict yourself to a closed platform managed by a single vendor,'" said David Gee, program director for Java marketing at IBM, which offers a Java development tool of its own called VisualAge. In a connected world, Gee said, there are multiple platforms, and developers should therefore stick with portable Java foundation classes.
But Fitzgerald says Microsoft's position is simple: A lot of developers are developing Windows-specific Java applications and they need a tool to do that better. "There are definitely people out there who want to do this," he said.
And others agree. "If there weren't real concerns about Java performance and functionality the value-add for writing in the Microsoft environment would be nil," said Ron Rappaport, industry analyst for Zona Research.
Developers, added Seybold's Thomas, will still be able to use Microsoft's portable Application Foundation Classes (AFCs) - so simply offering a tighter tie-in to its own operating system is a reasonable move.
"The Win32 API ... is a really complex, horrible, ugly thing to work with, and the Windows foundation classes ... make it much easier to build Windows applications," she said, in explaining why developers would use the new version of Visual J++ to build Windows-specific apps in Java. "You can certainly use the AFC classes and pure Java classes and continue to build portable applications" - a sentiment echoed by Microsoft's Fitzgerald.
Why develop in Java?
Some of Java's features attractive to developers are the speed of its memory allocation and the elegance of its "garbage-collection." Languages like C++ require developers to keep track of all the objects they create along the way and continually destroy unwanted ones. But the Java environment will automatically delete unused objects it detects, thus freeing developers to create objects at will without having to worry about deleting ones they don't use.
But IBM's Gee sees the new Windows foundation classes as a strike at Java's cross-platform promise. "We believe that this is a tool that grays the line between writing Java and writing platform-specific Java for the closed and proprietary Win32 APIs."
The disparity of viewpoints is consistent with the ongoing, often quasi-religious fight over Java and its destiny. At its heart, Java is just one more way to program a computer. But because it can run applications atop a software, rather than hardware, platform - the Java virtual machine - Java has been posited as the great platform equalizer.
Yet Sun itself, observers point out, has tried to bend Java to its own means. "When Sun says 'pure Java' that means anything that fits into their view of what Java should be. But Java may want to be more than what Sun wants," Rappaport said.
Sun recently licensed a chip design to IBM that is itself meant to deliver the ultimate Java hardware platform. Sun touted the chip specification for obviating the need for a Java virtual machine by letting Java apps and hardware work directly with one another.
So who's to blame if one of Java's split identities overtakes the other? Ultimately the blame may fall on the Java virtual machine for not living up to its promise - an area that Sun is attempting to address with HotSpot, a new technology that the company claims will address some of Java's performance issues.
Addressing the project last December, Sun product manager David Griswold said "HotSpot is an attempt to go back to the principles and tackle Java performance from the ground up - and look at all the obstacles in the way of Java becoming as fast as C++."
Essentially, Microsoft is doing the same with its new Java classes - only for Windows exclusively. But until HotSpot delivers the same benefits across all platforms, developers are likely to respond. They like to build applications in Java, cross-platform or otherwise, and that's where the momentum for Sun's software prize is strongest at the moment.
As Zona's Rappaport notes, "Java is only a development language. ... it's just been inflated into something greater."