Tim Cook has pulled a startling coup, getting Larry Ellison to start cooking — if not eating — his own dog food.
The headlines make it sound like Oracle, the inherited owner of Java, has generously stepped in to help protect Mac owners from infections like Flashback. There’s an important backstory, though, that hasn’t hit the headlines.
Although Steve Jobs tried for years to get out from under the Java ball and chain, last week Tim Cook finally coerced Oracle into supplying updates for its own software. It only took 700,000 infected systems to convince Oracle to handle Java on OS X itself.
Steve Jobs dropped Java for the Mac in October 2010, removing it as part of the standard OS X install. The Mac OS X Developer Library post for Oct. 20, says, "The Java runtime ported by Apple and that ships with Mac OS X is deprecated. Developers should not rely on the Apple-supplied Java runtime being present in future versions of Mac OS X." At the same time, Apple stopped accepting apps for the Mac App Store that relied on the Java Runtime Environment. Apple had never supported Java clients in its iOS.
On Oct. 21, 2010, the MacRumors forum said that Jobs replied to a concerned Java developer, claiming, "Sun (now Oracle) supplies Java for all other platforms. They have their own release schedules, which are almost always different than ours, so the Java we ship is always a version behind. This may not be the best way to do it."
Of course, Jobs knew at the time he was blowing smoke — or perhaps a reality distortion field set in. With a few notable exceptions, Java’s owner has never supplied versions "for all other platforms." Back when Java started, Sun supplied a version of the runtime for Linux because, as the "father of Java" James Gosling says, "there was no one else to do it." Every other distributor — Microsoft, IBM, Hewlett-Packard, and Apple — rolled its own version, based on Sun’s reference code.
Java 1.0 for Mac OS 9 was released in 1996, the year Apple bought NeXT and Jobs returned to the Apple fold. Jobs knew full well that Apple was developing its own version of Java, just like all the other platform providers.
Microsoft started taking its version of Java far afield, adding its own extensions to the language, and Sun sued in 1997 to get its trademark back. A bitter, extended, and very public court battle ended in January 2001, with Microsoft paying Sun $20 million for its transgressions and Sun taking control of Java updates. Until this last week, Sun had released Java versions only for Linux and Windows. All the other platforms made their own.
The fact is that Jobs had been trying for years to get Sun, then Oracle, to take over Java releases for OS X. Back in 2007, Jobs is quoted as saying, "Java’s not worth building in. Nobody uses Java anymore. It’s this big heavyweight ball and chain." In 2010, when Jobs dropped Java like a hot cup of coffee, he tried to shame Oracle into supporting it. Since then, Java’s been a neglected stepchild in the Mac world, completely shunned in iOS.
As Gosling says, "In the early days, they [Apple] were insistent on doing the port themselves. They put terrific energy into it. They did a good job. But then, as OS X took hold and Apple was able to convince developers to target their nonportable/proprietary environment, Apple’s fundamental control-freak tendency took over and they put less and less energy into Java."
Oracle is now distributing Java SE 7 Update 4 for Mac OS X, and that will become the default version on Java.com starting May 1. Henrik Stahl, senior director of Java product management at Oracle, says, "Oracle’s JDK and JavaFX release supports OS X Lion on any 64-bit capable Intel-based Mac. … There are community efforts based on OpenJDK to build JDK 7 [and JVM on 32-bit machines] for other configurations, easily found using your favorite search engine. We applaud these efforts! "
Oracle has announced full plans to embrace OS X Lion and later with new updates to the Java Standard Edition and Java Development Kit. (The JDK includes the Java Runtime Environment, JRE, which in turn includes the Java Virtual Machine, JVM. And you thought Microsoft’s terminology was confusing!)
It’s not clear if Oracle will be updating the Java runtime for earlier versions of OS X. That’s particularly troubling because Dr. Web, the site that originally broke the story on the Flashback infections, now says that 25 percent of all Flashback infections come from Macs running OS X 10.5 Leopard, and 63 percent more are from OS X 10.6 Snow Leopard. Only 12 percent of all infections are in OS X 10.7 Lion, and those are the only machines that will be patched with Oracle’s Java SE 7 Update 4. Leopard and Snow Leopard users are left to the "community efforts." If either Apple or Oracle is concerned about the hundreds of thousands of customers left swinging in the wind, there’s no indication I can find.
In contrast, Apple’s two recent Java patches covered Lion and Snow Leopard. They didn’t cover Leopard.
It seems that Jobs’ desires have finally been fulfilled, with the Java monkey now on Oracle’s back. Cook was at the helm — perhaps actively involved? — when it happened. Apple’s now able to wash its hands of all Java’s faults going forward. Oracle has responsibility for its own product. All it took was 700,000 infections.