March 29, 2009

Open Source is not as Open as Standard Specifications

The situation is actually more troubling than it appears, and it reaches beyond the question of modularity. Jigsaw is Sun's effort to incorporate a module system (JSR 294) into Java SE. After years of haggling with the OSGi Alliance, it appears that JSR 294 will support interoperability with the established and widely-supported OSGi framework (JSR 291), although it still seems pointless to me to develop two different module systems. (Note that JSR 291 is an approved spec, and JSR 294 is not.) See the OSGi blog for a bit more history on this battle.

The really troubling bit is that Sun is hard at work developing OpenJDK 7, and it is incorporating non-approved specifications like JSR 294 into it, but it has not yet submitted a JSR for Java SE 7. I guess that Sun now believes that supplying a single open source implementation of the Java SE 7 platform is good enough, and that defining a standard specification that enables other vendors to develop their own implementations is no longer necessary.

This maneuver establishes OpenJDK 7 as what Burton Group refers to as a "Rebel" framework. It's comparable to other popular open source frameworks such as Struts and Spring.In this case a very popular framework -- but non-standard, and available from only one source.

What are the implications for Java going forward if Sun decides to abandon its standardization system, the JCP? What's to become of Oracle JRockit? And IBM's implementations of Java on z/OS and other operating systems? Sun will not build ports of OpenJDK 7 for all possible platforms. Should the other vendors simply abandon their implementations in favor of Sun's implementation?