I realize the very last thing I said about Java on the Mac was extremely negative, and I think that still holds. Apple screwed up, big time. What I’m talking about is a grass-roots effort to port Sun’s FreeBSD version of Java 6 over to MacOS X. I’m talking about SoyLatte.
For those of you playing catch-up, SoyLatte was started by a bright guy named Landon Fuller with the expressed purpose of providing a Java 6 implementation for MacOS X 10.5 (Leopard). It does this by availing itself of Mac’s BSD roots. Because Darwin is basically a fork of the FreeBSD kernel, many BSD-based application can be easily ported to run in some form on MacOS X. Sometimes all it takes is a recompilation linking against different libraries. Obviously a full blown JVM is quite a bit more complicated than GNUChess, but the principle is the same.
The key phrase here is “run in some form”. Mac applications are legendary for integration, sophistication and smoothness. I have to admit that this reputation is well merited. As a credit to Apple’s work on its (now outdated) JVM, this integration even extends to many applications written in Java. Swing applications on Mac look native (because they’re using native Cocoa widgets, even more native than SWT’s Carbon implementation). Java applications are also fully AppleScriptable, have access to core services like the application menu, services, file associations, the dock; the list just goes on and on. This kind of tight integration is exactly what James Gosling was talking about when he said that Apple wanted to do the Java port on Mac themselves. This kind of tight integration is very difficult for third-parties to accomplish.
Just to choose a comparatively trivial example, consider Swing (I did say comparatively). Swing/AWT on Mac is peered by Cocoa and extremely performant, a trick that Sun failed to turn on Windows for half a dozen releases (partially succeeding in Java 6). Swing/AWT on FreeBSD is backed by X11 and can be pseudo-peered using GTK+ widgets. Now Apple does have a version of X11 bundled with MacOS X, and GTK applications do appear passably Mac-ish, but it’s still not the environment to which Mac users are accustomed. Even solving this non-blocker issue will require thousands of man-hours and some really clever engineering.
But the point is: it’s happening. There’s so much momentum behind this project it’s unbelievable. LandonF is rapidly becoming the equivalent of a blogger household name (think “DHH”), and people are practically lining up to get in on the action. Now I honestly don’t know how much contributor interest the project is seeing – there are quite a few hoops to jump through – but I know the attention from the community has been staggering. It’s enough to make me want to buy a Mac just to help out.
What we’re seeing is virtually unprecedented. The open-source community is taking a version of Java and independently porting it to another operating system. Yes in the past we’ve seen projects like GNU Classpath and Harmony which have done clean-room Java implementations, but that’s a totally different problem. Neither GNU Classpath or Harmony are JCK certified, which means that they’re technically not “Java”. If Landon and company succeed in getting the FreeBSD Java 6 fully ported to Mac, they probably won’t face this issue. Because it’s basically Sun’s implementation, and thanks to the new community control over the JCK certification process, SoyLatte could be the first third-party Java distribution to actually be “Java”. This makes it a viable alternative for developers and (more importantly) big companies which are gun-shy on third-party ports.
So this is an incredibly exciting piece of work. SoyLatte may be one of the most significant open-source projects in the last few years, and we’re seeing it unfold right before our eyes. If you have a Mac and any extensive knowledge of Java, you should really consider helping out. Here’s your chance to do something really significant for the future of Java on one of the most rapidly growing platforms on the market. Those of us on the sidelines can only sit cheer, marveling and history in the making and admiring the power of the community.