Apple OpenJDK for OS X and a "New graphical client"

Apple and Oracle today announced the OpenJDK project for Mac OS X, ending weeks of speculation about the future of Java on the Mac OS X platform. In the joint announcement from Apple and Oracle, it was stated that "Apple will contribute most of the key components, tools and technology required for a Java SE 7 implementation on Mac OS X, including a 32-bit and 64-bit HotSpot-based Java virtual machine, class libraries, a networking stack and the foundation for a new graphical client."

Apple OpenJDK and "a new graphical client"

The words "new graphical client" at the end of that statement give me some pause. Without any more information, this seems to confirm what people have written, that the current versions of Mac Java used unpublished API calls in their Java Swing API, and therefore Apple won't release that code to the public.

More on the Apple OpenJDK announcement (Apple Java-dev mailing list)

Here's a little more information on the Apple OpenJDK announcement from a man named Mike Swingler, who is Apple's primary support person on their Mac Java-dev mailing list:

We are still working out the details of exactly who will commit what where and into what tree, so please bear with us as we sort out how the initial commit will land, where to report bugs, mailing lists, etc.

To set expectations, the first drop will be effectively a "SoyLatte"-level implementation, but is packaged as a Universal Mac OS X .jdk bundle that can be dropped directly into /Library/Java/JavaVirtualMachines. Over the coming weeks and months, we will be adding pieces and parts of our Java SE 6 implementation to the public project, and will cut over from using an X11-based AWT to a Cocoa NSEvent-based one with a new OpenGL-backed graphics layer.

There are several parts of our Java SE 6 implementation (like the AWT widgets) that are not contributable, in much the same way that several parts of Oracle's implementation are not. However, the vast majority of our Swing Aqua Look and Feel implementation is, as well as the eAWT/eIO API. We intend to host the legacy AWT widget set using lightweight peers, but that work is still in progress.

As he writes there, the AWT widgets (part of the GUI implementation) won't be contributed. The "SoyLatte" implementation is not interesting to me at all, as I don't like the idea of using X11/X-Windows for a Mac Java GUI, and I look forward to the time when the Cocoa NSEvent OpenGL rewrite is complete.

Fortunately Apple will be releasing a version of their current Java JDK/SDK 6 with their "Lion" OS X release next year, so Mac Java developers can now keep writing Java Swing applications without worrying that Lion won't support their work.

More Apple OpenJDK information

For more information about this Apple OpenJDK announcement, here's a link to an Oracle blog (I thought Oracle abolished blogging?), here's a link to the press release on Apple's site, and here's a link to the OpenJDK project page.