Something to keep in mind is that MS does not offer a newer version of Java because of Sun.
Microsoft was using it's usual embrace-and-extend tactics in direct violation of one of their contracts with Sun, and Sun was under no contractual obligations to continue providing them with new specifications. It would only make sense that they stop Microsoft from perverting Java and create their own JVM for Windows. Unfortunately, adoption of the new JVM was directly blocked by the Microsoft VM.
A while back Sun sued MS for offering an implementation of Java that was not fully compatiable with Java.
It wasn't "Java" according to the contracts Microsoft signed with Sun. It was a technology derived from Java. It did not pass Java compatibility tests, and it altered fundamental portions of the language in a way that made some Java applets incompatible with other vendor's JVMs. That's why you don't see it actually called "Java" when you download updates from Microsoft. Even Microsoft now calls it the "Microsoft VM".
As part of the settlement MS was barred by Sun from shipping a newer version of Java or updating the current version. Microsoft actually had to go back to Sun to get permission to fix some bugs/ security holes in the old Java runtime.
Since Sun was offering to
give Microsoft a free JVM to distribute with Windows, I fail to see how MS was barred from shipping newer versions of Java or why it was so terrible that they had to ask Sun to do bug and security fixes on a competing VM created from Sun technologies.
Really, Sun is a victim of its own foolishness. Yeah, MS was selling a broken implementation, and yes they should have been stopped. But preventing MS from shipping any JRE they developed in house simply meant that they would basically ship nothing (as XP does not ship with Java, it must be downloaded- either MS's old Java or Sun's lastest JRE).
What's wrong with Microsoft shipping nothing? By shipping their ancient, incompatible VM, they could argue that including a JVM from Sun or any other vendor was redundant and a waste of disk space. Now that the Microsoft VM has to be downloaded and installed separately, the two VMs are on equal footing. If you had a choice between downloading a more recent, faster version of Java and downloading a ridiculously outdated VM that doesn't even say "Java", which would you choose?
Furthermore, C# is perfect proof of what Microsoft would have done with Java if given the chance. Microsoft was creating a VM that had applets that were incompatible with the JVMs of other vendors and designing Java compilers that compiled directly to WIN32 code. Allowing MS to continue with that kind of behavior would have allowed them to turn Java into C#.
Now that they stopped them they said "Hey, no one is using the new stuff on Windows!?!?"- well DUH! Most Windoz users have no idea about Java, no less who makes it or if they needed (heck most dont know about Flash)
Not really a valid argument. Some people don't even know what Internet Explorer is. However, if you don't have Flash, and you go to a website that requires it, you'll probably download it. If it becomes a common enough download, vendors and ISPs will start including it with their products. It's not important if the average Joe knows about it. It's important that the web developers know about it and have access to it.
I am sorry, I feel no pity for Sun here. They may not have started this fight or layed the foundation, but they certainly built upon it with the settlement they hammered out with MS on Java a long time ago.
The only mistake they made is not forcing MS to include the Sun JVM as part of the settlement, and they probably couldn't have gotten that out of MS anyways, since the whole point was to eliminate the threat to their OS monopoly. Courts were their only option, and considering the intentional damage MS inflicted and its monopoly status, I think this decision was a mistake.