Darwin's Theories Blog

New Theories for a New Time

OpenJDK steps closer to full GPL open source

Only builds on a few major platforms, and with additional license terms
At this week's JavaOne, Sun announced that they have uploaded more pieces of the JDK to the open source repository.  At the same time, they announced that there are some big missing pieces that will not be available under GPL until somebody replaces them, which may take six-twelve months. There is a binary workaround - for three platforms only; Mac OS X and the BSD's are left out - in the interim.  They also announced a semi-independent Governance Board to manage the development of the open sourse project known as OpenJDK.

The OpenJDK web site is changed to openjdk.java.net (no .dev in the name anymore).

Sun's JDK implementation consists of about 25,169 files.  About 894 (4%) are covered by pre-existing binary-only licenses that Sun could not get out of.  The bulk of these are the font- and graphics rendering engines. Projects are already starting to address these (using e.g., the font stuff could potentially use the platform-dependent "freetype" renderer where installed).

It is amusing to find that, after a dozen years of Java, major chunks of AWT, Java's basic window system, are in fact not owned by Sun.  It would be a bit like finding that, after many years of using MS-DOS, you were to find that Microsoft didn't write it.  Which, of course, they didn't.

To make the JDK buildable in the interim, Sun offers something called a "binary plug", which is a pre-compiled platform-specific JDK that is only intended to be used in the OpenJDK build process. Building the OpenJDK, during this interim period, on a supported platform, therefore consists of setting two variables and typing "make". The variables are the traditional ALT_BOOTDIR to the real base JDK (hopefully 1.6) and a second pointing at the binary plug.  According to main speaker Mark Reinhold (and my interpretation of the file "ASSEMPLY_EXCEPTION" in the top-level directory of the "06_may_2007" download), you can ship the resulting binaries, although you can't call them "Java(tm)" because there is as yet neither a formal definition of Java 7 nor a Technology Test Kit (TCK) for it. Kurt Miller has raised the issue that this imposes extra licensing conditions on the generated binaries.

During the interim period - which Sun have admitted may last a year - building on non-supported platforms - such as Mac OS X and OpenBSD - is going to be royally painful.  Note that the missing bits are partly in Java - which you can easily use from the binary plug - and partly in "native code" e.g., C.  Moving compiled library pieces and "shared libraries" (aka DLL) to run on a different operating system can be difficult or impossible.  But you will have to either find a way to convert the native bits to run on your platform, or stub them out (but with no AWT you can't run anything with a GUI), or try to drag over the relevant bits from Harmony or Classpath.org - something Sun might consider doing. Intel donated a fairly complete AWT + 2D API to Harmony, and ClassPath has a fairly complete peer-free implementation of AWT.

To manage the ongoing developement of this code base, Sun are setting up an OpenJDK foundation.  Note that management of "the platform" a.k.a "what constitutes Java" remains and shall remain firmly in the hands of the Java Community Process, with Sun as the specification lead for all major components.  During this session, Sun's Laurie Tolson signed the legal document creating the interim version of this organization, whose board (3 community members and 2 Sun peeps) is charged with creating a constitution for the organization and getting it ratified by "the community"; this may take 6-12 months.

This move is definitely progress in the right direction, but the issues of the binary plug license, and bootstrapping on unsupported platforms, remain as outstanding issues.