Simple, yet insightful.










  

What Windows XP means to Java

Microsoft has announced that Windows XP will not include support for Sun Microsystem's Java, using the lawsuit settlement (Microsoft was ordered it couldn't modify Java) and another pending lawsuit regarding the downloading of executable code as scapegoats. This will adversely affect Sun's desktop Java platform, ususally referred to as J2SE, short for "Java 2 Standard Edition".

Hopefully if Sun is smart, they have already been discussing adding Java support with all the major PC makers. If Sun can strike the right agreements, all major PC makers would add Java as one of the pre-installed programs.

However, Microsoft seems to be going further based on some previews of Windows XP. Not only will Java be excluded from Windows XP, but the latest version of Internet Explorer is not expected to understand some of the HTML codes critical to running Java and some other embedded components.

Perhaps someone will come along and write a tool which alters Internet Explorer to once again understand these components, and perhaps this tool could also be included as a pre-installed component. But more likely, users will have to put forth the extra effort to find, download, and install such a tool. How many are really going to do that? How many are able to?

So this is yet another example of Microsoft using its monopoly power in one area to force a competitor into a worse position. They used their monopoly in operating systems to give everyone free web browsers, forcing competitor's market shares to under 20%. Now they plan to use that new monopoly in web browsers to ween people away from Java (at least on the desktop) in favor of Microsoft-dependant languages, most likely C# (C-sharp, which musically is also known as D-flat.)

But Sun has changed strategies or at least made new opportunities for Java. While Java was originally developed as a technology to command all sorts of devices (phones, clocks, digital assistants, coffee makers, etc.) it really took off as an easy to use, feature-rich language which was fairly easy to transfer a program from one piece of hardware to another. Java particularly shines in network computing (the Internet, for example) because it is so easy to connect to other computers or devices and it is usually thought of as fairly secure. J2EE, short for "Java 2 Enterprise Edition" is particularly suited to this sort of network enterprise computing.

Many Microsoft skeptics felt Java was a "Windows-killer" because programs written in Java that ran on Windows could also run on Macintoshes, computers running Linux, or whatever. This feature, in theory, would make it easier for end-users to pick whatever operating system (read: not Windows) they wanted, and therefore release users from the "I have to run Windows because all the good software is written for Windows" syndrome which was caused by the "Everyone has Windows so we need to write our programs for Windows" illness software companies developed. Or was it the other way around...

Now, Sun seems to be returning to Java's original vision. Sun is partnering with just about every wireless phone maker or personal digital assistant company and asking these companies to include versions of Java specifically designed for small devices. These versions of Java are collectively known as "J2ME" which stands for Java 2 Micro Edition, but they all share the vision of allowing the same program to run on all devices without much change.

Overall, Java seems well positioned to weather this latest MicroShaft(tm), mostly because of its J2ME strategy. Although not discussed here, Microsoft's .NET seems to be a response to J2EE. As mentioned above, Microsoft's dropping of Java can be a blow to J2SE, if Sun lets it. But it doesn't look like Microsoft has an answer to J2ME. Yes, Microsoft has its Windows CE, but devices have to be fairly robust to run Windows CE. Further, Windows CE is an operating system, while Java and J2ME is more of a programming language as well as a runtime environment (which is a key feature of an operating system.)