Compatiblity vs. Diversity: Will OpenJDK help Java survive?
Compatibility or Diversity
One thing thats right in Davids comment is that as soon as there are many different distributions of one Software product this will hurt compatiblity to the original product. One reason why people develop different implementations of an existing product is that they think the original product (i)does not offer the thing they need and/or (ii)the feature works bad or not as expected.
This goes for all kinds of software thats around there today. No matter if you write Tools, APIs, Frameworks, etc. you can bet that sooner or late there will be improvement, extension, enhancement or whatsoever.
OpenSource: The root of the War
One thing David omits in his comment was that the OpenSource movement - driven by the emergence of Linux - has helped Linux encountering the Desktop and thats why so many poeple use it today. So diversity and open systems also have a good point. If Linux would not exist, Microsoft would be the Monopolist you fear. And with Linux many useful Unix tools discovered the Desktop and gain a much broader popularity.
So with open systems you have the freedom of choice to pick the one you like and leave alone the ones you dont. Just imagine there would only be one OS to make things worse, consider this would be Windows. All people on this planet -including the SUN engineers - would have to use this mor or less stable operating system. Unless you throw it away and write your own. And... see grow up another incompatible system in the world.
OpenSource and Compatiblity
I dont say that software diversity is bad or compatiblity stops diversity but keeping compatiblity and allowing diversity is a thing all major software developers and vendors have to face.
Its also true that its software vendors own failure that different and incompatible versions of a software exist. Its true that for the Windows plattform there are today - at least - three different kinds of frameworks and APIs available that are more or less incompatible: .NET, MFC, and Windows API. Yes you are reading right... the MFC is still alive :).
On the other hand, if low-level APIs such as Windows API would not be available it would be hard to write certain applications that you cannot develop using .NET only.
Since Java is a cross-plattform programming Platfrom - not just an API or language its another story. Sure the existance of other opensource implementations like the Classpath project or other Java VMs does not make lifer easier for developer however, i believe that most Java developers are using the SUN Java Platform.
So in the end i think that Java wont suffer the same silly war than Unix because its already in widespread use on different platforms and it was initially developed with the scope of cross-platform usability while Unix was not.
And another thing thats important is that SUN has opened the Java TCK Compatibility tests for OpenJDK so this might be a resort to help ensuring compability to the original Java platform. So, finally, if SUN opensources Java it has to solve the problem of OpenSource freedom and commercial interests.