As I wrote over on InfoQ, Apple has decided to Deprecate Java on OSX, and potentially remove it (or not ship it) from future releases of OSX. The writing has long been on the wall for Java on OSX; I’ve already proclaimed Java dead on OSX at least once before, most notably due to the security issues present when Java is enabled in WebKit/Safari (howto disable Java in WebKit).
What does this mean for Eclipse and other Java-based IDEs? Well, one of the key problems is that the OSX implementation of Java provides a number of Cocoa-specific bindings and hooks. Whilst Eclipse is based on top of SWT, and SWT uses the native widget set directly (rather than AWT and Swing which render their own), there are a number of hooks into the Cocoa layer to provide application-level services. Some of these have been extended in the redesigned eAWT package to permit Java applications to opt into user events (including the “sudden termination” which enables faster OS shutdown).
NetBeans and IntelliJ, which rely on the AWT and Swing directly, may not be so lucky. Ports of the OpenJDK (such as SoyLatte) may use X11 instead of the native OSX windowing components; it’s not clear whether Apple will donate back the OSX-specific UI code. (Earlier, when Sun was in charge, Apple were happy to donate back certain items such as the ability to load the
rt.jar into shared memory for multiple JVMs to take advantage of.) Going forward, JVMs will be installed into
/Library/Java/JavaVirtualMachines; though hopefully the JVM selector will still map the commands like
/usr/bin/java into the selected default platform.
Either way, this is the end of an era; and, if as promised Apple don’t ship a JVM with OSX 10.7, may be the beginning of the end of Eclipse on the Mac platform. If so, this would be a tragic end to an excellent journey, which led me to the Eclipse community back when it was being ported to OSX for the first time, through to helping test out the Cocoa port when it was ported again, and to now, where I am finally in an Eclipse paying job.