Apple and Java: Stop Whinging!
Simon Brocklehurst is an interesting blogger who always has something thought-provoking to say. Often I agree with him, sometimes I don’t. Today, I don’t. In his latest post he talks about the frustrations of developing in Java on Mac OS X. Incidentally this is a topic that the JavaPosse like to bang on about as well, and I must say it puzzles me.
I recently switched to a Mac laptop, and before switching I was a little worried about the Java support, having heard rumours about Apple not being very keen on Java. However, on digging a little deeper, I found there wasn’t too much to worry about: my new Mac would come with Java 1.4 installed already, and I could download Java 5 from Apple’s developer website.
That’s already better than a PC, frankly. Last time I checked, Windows didn’t ship with anything that Microsoft was legally entitled to call “Java”. But in fact, when I received my new Mac I was pleasantly surprised to discover that Java 5 was already installed, so I didn’t have to download anything at all (save for Eclipse).
So why should Apple devote its precious resources to keeping up with largely unnecessary new versions of Java? It should be obvious to anybody that Java is not central to Apple’s strategy: “Write once, run anywhere” is anathema to an O/S vendor that takes pride in the high visual quality and tight integration of applications running on that O/S.
Most niche platform vendors try to lower the risk of developing for their platform by making it as easy as possible to port from other platforms, and Java is a great enabler in that regard. However Apple is different: they try to keep their platform distinctive, and discourage developers from doing anything so unseemly as “porting” applications to the Mac. Ideally applications should be designed explicitly for the Mac, to the exclusion of all other platform. Luxury brands in other industries follow a similar strategy. For example, if you drive a Ferrari, you will find that parts and accessories are gratuitously incompatible and therefore far more expensive. Furthermore, Ferrari drivers go along with the charade — they would be horrified at the thought of sullying their Italian masterpiece with a Korean tyre.
Even more obviously, Java was never core to Microsoft’s strategy. MS hates it for the same reason the niche platform vendors love it: because it offers a way to break the Windows lock-in. Sun recognized this and made its Windows version a first-class citizen, supported directly by Sun. Why doesn’t that happen for Mac OS? Cutting-edge Java support on the Mac is more important to Sun than it is to Apple. If Sun feels the need to make “major” releases of Java every couple of years, then Sun should take on the burden of keeping the Mac OS version up to date with its Windows, Solaris and Linux releases. Alternatively, now Java is open sourced, the subset of Java developers who think Java 6 matters can work on a port themselves. Nobody expects Microsoft to dutifully implement the latest version of Java for Windows when Sun tells them to.
Apple is doing just fine with their support for Java. They should stick to their knitting and make sure Leopard is a stable, high-quality release of Mac OS. If you disagree, that’s fine — why not stop whinging about what Apple is doing, and lend your support to porting OpenJDK?