While Oracle has imposed order and unity in a contentious Java community, at what price has it come?
The OpenJDK alliance strengthens Oracle's hand on another front. Oracle is at the forefront of three lawsuits challenging Android users on their implementation of a Java virtual machine. Oracle is suing Google; Apple is suing Nexus One manufacturer HTC; and Microsoft is suing Motorola. The thing that these suits have in common is a desire to halt the spread of Android in favor of each plaintiff's own mobile operating system: Apple iOS, Windows Mobile, and Java Mobile Edition.
It's possible these suits will stifle Android development, but I doubt it. The Harmony Project established clear lines of origin for its Dalvik virtual machine -- Dalvik is sometimes referred to as the progenitor of the virtual machine used in Android. In addition, Google claims it did its own clean-room implementation of the JVM; its virtual machine doesn't run Java byte code. Whatever the pros and cons, Oracle's hand was probably strengthened in its suit against Google by weaning IBM, with its expertise on JVMs, away from Harmony. I think the shift leaves Oracle, which has charged infringement of seven Java patents, in a better position to negotiate a settlement with Google.
If Oracle can prevail either in negotiations or in court, the die will be cast for Oracle to monetize Java in the rapidly expanding mobile market. Harmony was a direct threat to that, and a vote in the JCP in support of Apache was a potential challenge to both Oracle's leadership and Java monetization. Even if Java Mobile doesn't dominate the majority of future handhelds, a favorable negotiated or litigated outcome means Android implementers will owe Oracle a royalty for each handset shipped.
Aren't these developments normal in a contended technology arena? How can they be deemed harmful to Java?
To me, It's unthinkable that skilled open source developers would be encouraged to join in the Java development process or even develop with Java with the spurning of Apache talent, not to mention the patent claims flying around the use of supposedly open source Java. Java was supposed to be an open-ended opportunity, headed for international standardization and worldwide use for everyone to invent new products. Now Oracle is sending an unmistakable signal that it controls Java's future in the enterprise, and, if it can, will control it in the mobile market. And it has IBM as its co-governor/regulator. This is a more unified Java but unity that has come at a price.
The toll here is in the loss of new developers, who might otherwise be attracted to the possibilities of Java, the kind of potential that seemed to boil around Java as it first emerged for use on many different fronts. In recent years, legions of open source developers have turned away from Java toward PHP, Python, Ruby, the clear open source alternatives. More enterprise developers lately have been adopting Microsoft's C#, where the degree of proprietary control is clear -- which perhaps will become the primary differentiating characteristic between C# and Java. Such an outcome would be a bitter pill for long-term Java advocates to swallow.
IBM may yet regret turning away from the open source guarantees it once sought to provide through Harmony. If Java loses ground to a resurgent Microsoft and its Azure cloud environment, IBM, like Google, may chafe at Oracle's vision of how open source serves its owner.