Sun to push Java brand - is that what it needs?

An article from CNET reports that Sun is preparing a huge marketing blitz (advertising and awareness-raising badging) for its Java technology.

But, this leaves me wondering if the folks at Sun are still missing the point.

Comments made in the press release indicate that they will be liberalizing the license for researchers, but they are still not making any outward signs of giving Java up to the community at large.

When introduced, Java had the power to change the software world, and many of the folks who were interested in that followed with mounting interest the exploits of the language as it moved from platform to platform. And, to give it the appropriate credit, this article points out that there are hudreds of millions of JVMs (Java Virtual Machines) sold every year when you include the PCs, Macs, cellular phones, and Linux boxes all of which can run programs written in Java.

Java pointed the way by showing how a language which abstracted the machine requirements and provided a secure and safe execution environment (Java has security and error handling that prevents the equivalent of Window's "blue screen of death" and many forms of viruses). Unfortunately, Sun stopped short of opening up the standard to standards bodies and letting it evolve rapidly and organically. This has lead companies such as Microsoft to realize that they can take advantage of the sometimes-glacial pace of improvements in the language (and especially its programming APIs) by creating a parallel "standard" using its own proprietary architecture that works only on Microsoft Windows equipped computers.

Microsoft's relatively early adoption of Java, followed by their very public adaptation of Java to fit their own needs led to a row with Sun and eventually caused Microsoft to create .NET. Based on Microsoft's adopt , imitate, innovate (publicly referred to as adopt and extend) policy, they would likely have pushed Java in directions that Sun would not have liked. However, had Java been an open standard, there would have been room for programs that executed with Java requirements and those that required Java+Microsoft extensions.

Sun fought this tooth and nail because they believed they could win the fight forcing Microsoft to comply with their pseudo-proprietary standard and guaranteeing that Microsoft couldn't present an extended Java that would make their platforms more suitable for certain applications. However, I believe this was a grave miscalculation. If Microsoft were allowed to extend Java, they would likely have done so, and certain software makers would have made Java programs that would execute better (or perhaps only) on Microsoft platforms. Most of these enhancements were and would still have been in the user interface area (an area where Java has been somewhat weak and slow to move), and would not have threatened Microsoft's ability to dominate the desktop. However, by basing the products on the Java standard, there would have been good reason for back-end server code and middleware to be written in "standard" Java, without the Microsoft extensions. Unfortunately, as things have evolved, Microsoft has moved to the .NET platform which handles both their front-end and back-end needs and will compete with Java on desktop, server, and mobile platforms.

Will .NET beat out Java? Maybe, maybe not. However, given Java's current status as a closed (proprietary) standard, and given the huge difference in commitment and resources of Sun and Microsoft, I would be betting on Microsoft and .NET if I had to place a bet.

Is it all sealed up then?

I don't think so. I still believe there is time for Sun to open up the Java standard and let the market move quickly. This would include allowing people to use the JVM with different programming languages (much as .NET does) and more rapidly adding functionality to the standard Java libraries. Most importantly, it would provide an opportuntity for the rest of the industry to work together against .NET as appropriate. Perhaps the soon-to-be-announced relaxing of the Java requirements for "research and development" purposes will include such changes. In that case, Java may have a fighting chance. If not, I don't expect to see much Java outside of the server environment over time and you may even see .NET taking over there as Microsoft moves to standardize their runtime environment to allow other platforms to run the basic "virtual machine" for .NET, even without the user interface.

In the end, as much as Microsoft would like to sell servers, the money they really want to make is in the clients, and they sell servers to lock people in to their proprietary client technologies. If they can get more people to adopt the .NET virtual machine for execution of server code, they believe they may not need to own the server market, as the graphical clients interacting with .NET (as well as the machines on developer's desktops) will all be running Windows.