With Apple very quietly letting developers know that Java on Mac OS X is deprecated (you had to find it in the Release Notes for the latest Java Update), it's quickly time to think about what this means to Mac Java developers.
Why did Apple do this?
Seeing that they're not hurting for money at all (see Apple makes more than $1.6M revenue per employee), there are three possible answers here:
- Oracle, the new owner of Java, is forcing Apple's hand, just like they're going after Google for their Java implementation.
- This is Apple's back-handed way of keeping Java apps out of the newly announced Mac App Store.
- For some unexplained reason Apple just doesn't want to support Java any more.
I don't have any contacts inside Apple, but my guess is #2, this is Apple's way of keeping Java applications out of the Mac App Store, which was also announced yesterday. I don't believe there's any coincidence at all that (a) the "Java Deprecation" announcement was made in the Java update release notes at the same time (b) a similar statement was placed in the Mac Developer Program License Agreement. (And as a commenter notes below, Steve Jobs and Larry Ellison are good buddies, which would seem to rule out #1.)
Apple/Mac Java - Where we go from here
Now, the reality is we don't know what's going on, so we have to look at possible outcomes.
Apple continues to support Java The first (and best) option is that Apple continues to support their own SDK on Mac OS X, just like they do today. They may do this if their intent is to keep Java apps out of the Mac App Store. In this option they'll continue to state that Java is deprecated, yet they will appear to grudgingly support Java.
Oracle provides a Mac OS X SDK In the next-best option, Oracle steps in and provides a Java SDK for Mac OS X. There's nothing original about this, Sun has always provided an SDK for Windows and Linux, but they had some agreement where Apple could provide their own SDK for OS X. If Oracle is behind this recent announcement, you'd have to expect Oracle will provide a Mac Java SDK. With a little luck -- or perhaps a lawsuit -- Apple will be forced to provide the Oracle Java SDK with each new Mac system, like Microsoft was forced to do at one point with Windows.
After this the options get worse in a hurry.
Use an open source Java SDK The only possible viable option left for Mac Java developers is that an open source Java SDK is used on Mac OS X. In this scenario, developers and end users will have to download an open source Java SDK to run Java on their Macs. (I don't know much about SoyLatte or OpenJDK, but there has been a lot of discussion about them on the Apple Mac Java-dev mailing list.)
No Java on Mac OS X The worst-case scenario is that somehow no Java SDK is available for Mac OS X. This would only be the case if the open source Java SDK wasn't viable.
Summary: Apple - Mac Java is deprecated
Where we immediately go from here, only Apple knows. I can only report that the developers on the Apple Mac Java-dev mailing list are pretty upset. It's one thing to tell us that Java apps can't be sold on the new Mac App Store, but it's something entirely different to tell us that the SDK/JVM that we rely on to run our Java applications on Mac OS X may no longer be developed or supported -- especially after we've customized our Java apps to look more like native Mac apps, as Apple has told us to do for the last ten years or so.
For me, it's hard to imagine a world where Eclipse, NetBeans, and many other Java applications just won't run on Mac OS X systems any more, so I hope some resolution will come soon. Otherwise, if Apple doesn't continue to provide a Java SDK with Mac OS X, my guess is that this will fall into Oracle's lap, and if necessary, there will be a class-action lawsuit to make sure a Java JVM continues to be shipped with every new Mac. (I don't know how many commercial applications are written with Java/Swing on the Mac platform, but I do know that millions of dollars, and possibly billions of dollars, have been spent developing corporate Java/Swing apps to run on the Mac.)
Update - Friday, October 22, 2010
Someone posted a photo of an email between a CIO and Steve Jobs, and Mr. Jobs provided his usual one-line reply, stating:
"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."
James Gosling, the father of the Java programming language, then replied to Mr. Jobs' comments., saying among other things:
"It simply isn't true that 'Sun (now Oracle) supplies Java for all other platforms'. IBM supplies Java for IBM's platforms, HP for HP's, even Azul systems does the JVM for their systems..."
To which I add, "May you live in interesting times."