I spent a significant part of my career promoting and supporting Java development on Mac OS X, so I feel the need to eulogize in light of Apple’s announcement this week.
First: there are people at Apple who care about Java enough to work endlessly on it—despite the company’s perceived sentiments. They maintained multiple JDKs, on multiple CPU architectures and OSes, for years. They architected bridges and components that provided deep Java-native integration with (at the time) unprecedented ease of use. Executive quips always make headlines, but every Java team at Apple has been talented and truly dedicated, and they deserve recognition.
And there’s the rub. Every hour of talent spent on Java is an hour not spent on the next Core Animation; the next Mission Control; the next iPhone. Apple is a consumer-focused company, and the Mac a consumer-focused product. They invested a lot early on in making Java on the desktop viable. It just hasn’t happened. I’m not particularly happy or sad about it, but desktop Java is over.
What about the iTunes back end? The online store? Don’t they use Java? That might be a rhetorically amusing question, but it’s a nonstarter. Whether Apple has its own needs or not, supporting a few internal teams and supporting the world at large are two very different things. All that really matters is that it’s going away for us on the outside.
More importantly, server technologies are a different story. The layer with the least traction in the market on any platform—the client-side AWT/Swing UI—demanded the bulk of Apple’s efforts. Since the Intel transition, building a server VM for Darwin is almost trivial. I have to think there will at least be a viable headless OpenJDK for the Mac by the time Snow Leopard reaches end-of-life status. If there isn’t, then it’s hard to argue with this move. If Java doesn’t care about Java on the Mac, why should Apple? It would be wonderful if Apple kickstarted a community effort by dumping its AWT source into OpenJDK, but now we’re talking about lawyers.
A lot of Java professionals use Macs for development, even if they deploy somewhere else. What will they do? If they’re using Eclipse, I think they’ll be OK. It shouldn’t take long to shim SWT on top of an OpenJDK port, and IBM has shown a lot of initiative over the years. Other “pure Java” IDEs, like JetBrains’ (superior, in my opinion) IDEA, depend on a working AWT, and therefore have some more thinking to do.
John Gruber notes that this could conveniently make it harder for Mac owners to develop for Android. I don’t think that had anything to do with the decision. This was a long time coming. Java, like Flash, is a ball and chain for a company that loathes external dependency. And you just can’t argue that client-side Java is important to the internet experience like you can with Flash.
What about the web, then? That’s another abstract technology out of Apple’s control, right? Not entirely.
The sad part is that there are a lot of passionate third-party developers who worked very hard over the years to deliver a first-class Mac experience with Java. They will have to rethink their priorities and either focus on other platforms, or think about a Cocoa port (which, on the Mac, includes not just Objective-C, but Python and Ruby as well). They can take some solace in the fact that they got more support than Carbon developers, who were arguably more committed to Apple platforms in the first place.
Don’t think that Steve and Larry talked about this, either. Oracle probably cares the least of anyone. Java’s future on Mac OS X is in the community’s hands now.