Apple deprecates its release of Java for Mac OS X
Yesterday, the company released "Java for Mac OS X 10.6 Update 3," which brought Apple's bundled support for Java SE 6 in Snow Leopard up to version 1.6.0_22, and "Java for Mac OS X 10.5 Update 8," which similarly updated Leopard.
However, the company now notes that "as of the release of Java for Mac OS X 10.6 Update 3, the version of Java that is ported by Apple, and that ships with Mac OS X, is deprecated.
"This means that the Apple-produced runtime will not be maintained at the same level, and may be removed from future versions of Mac OS X. The Java runtime shipping in Mac OS X 10.6 Snow Leopard, and Mac OS X 10.5 Leopard, will continue to be supported and maintained through the standard support cycles of those products."
Apple has also reorganized how Java runtime homes are installed on Mac OS X, apparently in an effort to facilitate third party releases of the Java virtual machine. This would enable Oracle (which recently acquired Sun) to release Java for the Mac itself, rather than waiting for Apple do maintain its own Java release for Mac users.
Apple's bundled Java Preferences app (below) enables multiple Java releases to be installed at once, from different vendors, and allows the user to prioritize which will be used.
Apple's releases of Java for the Mac have long dragged behind the official, latest builds produced by Sun. However, Sun's Java was once a critical priority for Apple as it worked to launch Mac OS X and draw interest from Java developers in bringing their code to the Mac platform.
Since the late 90s however, Java as a platform for creating desktop software has failed to take off, leaving it largely relegated to serve as a server side platform in web application servers and custom enterprise development.
As Java receded from its expected role in providing a cross platform "write once, run anywhere" environment, Apple has increasingly focused its attentions on Cocoa on the Mac desktop, and subsequently Cocoa Touch for mobile devices.
No Java on iOS
In fact, because there's so much overlap between Java and Cocoa, Apple took the rather bold step of leaving Java off the iPhone entirely upon its launch in 2007, a step that made the iOS' Cocoa Touch the only way to deliver native apps. While chief executive Steve Jobs initially said Adobe Flash was a "maybe" on the iPhone, he was clear that Java was getting a "no" from Apple on the iPhone from the start.
Putting Java on the iPhone would have doubled its system software runtimes while only encouraging existing mobile developers to bring their weak Java Micro Edition apps to the iPhone. As things worked out, Apple's focus on Cocoa Touch resulted in a unified library of hundreds of thousands of apps that don't require a separate Java runtime and all the work that would be involved in maintaining both Cocoa Touch and a port of Sun's Java ME.
In contrast, RIM's Blackberry OS and Google's Android are both Java-based platforms; RIM hosts a licensed Java Virtual Machine while Google opted to create a Java-like environment that did not license its technology from Sun. That has since resulted in a lawsuit from Oracle, which claims Google's Android software infringes on its Java-related patents acquired from Sun.
Being exclusively Cocoa Touch, Apple's iOS devices benefit from having a single development environment and runtime in that the company isn't tasked with maintaining parallel versions of code that do the same thing just to support different platforms. Apple has also focused its efforts into building something the company owns, rather than benefitting the ecosystem of the third party Java platform.
Java on the Mac
A decade ago, Apple took the lead in bringing Java to the Mac out of fear that its unique platform would grow obsolete were it to fail to hop on the Java bandwagon. Sun continued to maintain Java VM releases for other platforms, while Microsoft actually took Java and turned it into a way to write Windows applications, splintering Sun's original intent of Java.
At this point however, Apple is not desperate for the attentions of developers. Its Mac platform now has greater than 20 percent market share among US retail PC purchases, it has hundreds of thousands of developers, and its core platform is being buoyed up by a massive influx of new iPhone and iPad developers on the iOS end.
With the announcement of its Mac App Store, Apple is making it clear that, while development of various platforms can continue on the Mac, Apple's focus will be on the modern Cocoa. And more importantly, the business model supporting easy to buy apps and instant downloads will benefit Apple's own Cocoa platform exclusively.
Apple's submission guidelines specifically target Java and Rosetta (PowerPC legacy code) as being among the "deprecated or optionally installed technologies" that approved apps must avoid. While developers can continue to release Java apps for Mac, or use Macs to build server-side projects in Java, it won't play any role in creating software for the Mac App Store.
It remains to be see how important Oracle views the availability of Java on the Mac; while Apple isn't immediately yanking its support for Java on the Mac entirely, it is committing fewer resources to maintain its own Java releases, likely with the hope or assurance that Oracle will step in and support the Mac as it does other platforms, just as Adobe maintains Flash for the Mac itself, and as Microsoft maintains Silverlight for the Mac on its own.