The recent announcement by Apple that the “Java runtime ported by Apple and that ships with Mac OS X is deprecated” has caused some concern and rather extreme responses. As a company that has recently invested heavily in Apple hardware for our development team, it might seem that we have fallen victim to the latest idiosyncratic or autocratic move from Apple and Steve Jobs. However, while I do think the story has implications, I don’t think it’s particularly troubling or consequential, except to those for whom the announcement is reinforcement of whatever particular world view they support (for example, is it proof that Java is dying, or evidence that Apple doesn’t understand the enterprise, or developers?).
Part of the nuance is in the wording, which makes it clear that it’s the availability of Java on future versions of the Mac OS that is uncertain, but that Java will “continue to be supported and maintained through the standard support cycles of [Mac OS X 10.6 Snow Leopard and Mac OS X 10.5 Leopard]”. So, if maintenance updates continue to be available for those products, the real issue is Mac OS X Lion, assuming that you want to upgrade to that after its release in Summer 2011. Further, Oracle are unlikely to allow a major consumer platform like the Mac go without a Java run-time, even if that means reaching agreement with Apple on access to the current code base.
For Apple, the move makes sense. They do not have unlimited resources for development, as is demonstrated by the evident prioritisation of development effort at different times on either iOS or Mac OS. In addition, the announcement of the App Store for Mac is indicative of Apple’s increasing confidence that the business model for application delivery on the iPod and iPad can be extended to the Mac platform. In this context, Java is irrelevant. Further, Apple’s appeal to the enterprise market is accidental at best, and leverages mobile capabilities rather than the desktop. [UPDATE: The comment on Apple’s attitude to enterprise customers was somewhat glib, but right on cue the company has EOL’d (pdf) the XServe, the only rack-mount server they sell. The suggestion that you use two Mac Pro towers instead (occupying 12U) is laughable.]
Taken together, there is little to benefit Apple in continuing to deliver Java on their platform. The announcement at JavaOne in 2000, when Steve Jobs joined Scott McNealy on stage to declare his love for Java, was likely borne of a shared enmity towards Microsoft rather than any shared technology strategies. There’s no real urgency, but for Java to continue to be available on Mac it will require Oracle to step in, and I expect that they will in some form or other.
As a final point, Gosling’s blog post criticising Apple for stating that Sun (now Oracle) “supplies Java for all other platforms” is in itself somewhat disingenuous. He is technically correct, but it doesn’t seem particularly black and white. He says that several vendors produce their own Java releases, like IBM and HP (spot the obvious?), but admits that Sun “provided the VM for Linux because there was no one else to do it”. Actually, Sun saw commercial advantage in having Java on Linux and Windows, and acted accordingly whether there was anyone able to take it up or not. The later dispute with Apache over the TCK for their Java SE implementation (Apache Harmony) is further evidence that willingness to provide a VM is not equivalent to approval by Sun to do so.