David Berlind was the first person to point out in his article that Android may be the start of a power stuggle for Java. Stefano has also an interesting perspective on Google’s plans to get around Sun’s IP restrictions for Java ME.
Now that the Android SDK is out, it is clear that Sun and the OpenJDK are not part of Google’s plans. Android includes a new virtual machine, called Dalvik, and makes significant use of the class libraries provided by Apache Harmony; no OpenJDK and no Java ME. In fact, the Android documentation makes very careful reference to the ‘Java programming language’ but not specifically stating that Android includes Java. Despite Jonathan Schwartz lame attempts of PR spin by congratulating Google on Android, this is definitely bad news for Sun, OpenJDK and JavaME.
IMHO, this is not a good situation for the Java community but I think it was predictable. Sun has been hyping the fact they have open sourced Java but in reality they have open source Java with a lot of restrictions.
First, they have limited the ability to certify other Java implementations . The Apache Software Foundation has been trying to access the Java TCK to test their version of Java, called Harmony. Sun’s response has been to impose ‘field of use’ restrictions that would limit the ability of Harmony to run on mobile phones or any embedded devices. Sun has made the TCK available only to those Java implementations that are GPL licensed and significantly derived from OpenJDK. Basically Sun is saying ‘we will only certify implementations of Java we have influence over and we will not mess with our license revenue from the mobile industry’. Kind of like saying we are kind of open.
Second, when Sun open sourced Java they chose the GPL license but included the classpath exception for the SE version. In the Java ME version, the GPL license is used without the classpath exception. For mobile operators that want to use Java but not GPL their Java applications, they have to purchase a commercial license from Sun. Again, Sun is protecting their license revenue from the mobile phone industry. I am all for companies making software revenue but don’t try to call it open source.
[Update: please see the comments before flaming me on this last sentence. I do not plan on changing it but I regret not being more specific in my thoughts. :-)]
Finally, Sun has made very little progress on establishing a governance board for OpenJDK. Last year they announced at JavaOne an interim council to help create the governance board for OpenJDK. However, based on the mailing list, progress is very slow. It would appear the last meeting they had was in July? I hope they are making more progress behind the scenes. Open governance is important to creating a community of trust. Right now, OpenJDK is firmly controlled as a Sun product line.
IMO, these three factors have created an environment that made it an easy decision for Google to go it alone with Android. Google wants to have an open platform that is quickly adopted with a vibrant ecosystem supporting it. In essence they want a bazaar not a cathedral for the mobile phone industry.
Sun has set the bar too high for OpenJDK. Yes, OpenJDK is a step in the right direction for creating an open source Java but so far Sun is limiting the full potential of what OpenJDK could accomplish.
btw, Happy 1st Birthday Free and Open Source Java lets hope you have a successful adolescence.