Java, MySQL, Oracle and Apple

Oracle and Apple recently announced the OpenJDK project for OSX.  While this looks promising on the surface, but it doesn't really change anything: Apple won't be distributing Java as part of OSX in the future.  It will be a separate download from Oracle, so you won't have Java on OSX unless you explicitly decide to install it.

This is fine for people like me.  In fact, it is more than fine because the default install of Java is usually broken on most operating systems.  (On Linux you risk having GCJ or similar garbage pre-installed and then tangled into the broken and inflexible "alternatives" mechanism in Debian or Ubuntu.  To add insult to injury, JAVA_HOME is usually not set.  On any OS. Java is not properly installed until JAVA_HOME is set.  Always and for every user.  Interestingly, on OSX you have a configuration panel to choose your Java version.  It doesn't work properly.  It never has.  So you have to edit symlinks manually.  But I digress).

As with any piece of software from Oracle, this means going to the website, agreeing to a license and then downloading it manually.  This is a pain in the neck.  Some open source projects have unwisely chosen to depend on certain libraries that are only available in this manner -- which means you can't automate dependency management properly:  you'll have to manually download dependencies and then decide how you want to incorporate them into your projects.  This is very "developer hostile".

To summarize: Java is going to be a second class citizen on OSX,  but we may have reason to expect easier access to current versions of Java on OSX.  Good news for developers who write server side Java software -- bad news for developers who want to write desktop applications for OSX users.

Oracle and "premium".

Much noise has been made over the fact that Oracle will be offering premium versions of MySQL and the JVM.  Strictly speaking, this changes nothing in the short term.  What has been free all along will stay free -- modulo some uncertainty over the InnoDB engine.  But in essence:  this doesn't change anything so there is no reason to panic.

Strangely enough, when I pointed out that what Oracle said about a premium JVM was basically the same thing they have been communicating about MySQL some people interpreted this in weird ways.  I was pointing out the similarity -- not that what they were doing was inherently evil.

If Oracle wishes to offer "premium" versions of free software then that doesn't automatically imply that the free versions will disappear.  No reason to panic.


Oracle has been very weak on messaging.  As a company they have no real grasp on how to deal with a developer community and they still have a lot of learning to do.  There are also some stories circulating that make people like me wary of licensing software from Oracle.  Building something with an inherent dependency on Oracle software borders on the irresponsible.

In addition there is the Google lawsuit that casts a shadow over the whole Java community.  Oracle may be able to extort some pennies from Google, but in doing so will sacrifice a good chunk of goodwill and developer trust.

The Java technologies are now fairly toxic IPR-wise.   People feel betrayed.   And rightly so.  Android may be the last big contribution to the Java community. (Let us remind ourselves:  Java and mobile pre-Android was a laughable matter.  JavaME has been around forever and has been a chaotic, fragmented, frustrating, irrelevant, and under-powered affair.  And Android is now the seccond biggest smartphone platform and overall a major operating system).

Nobody in their right mind would tie themselves to the mast of Larry Ellison's boat when creating a new major software ecosystem (say, for the "web of things" or machine to machine applications).

Mobile computing is the most aggressively growing market, and Ellison is willing to poison the one really big thing Oracle has going for them in this area for some short term gains.  I'd be reluctant to make any bets on technologies owned by a company that isn't in it for the long haul.  And Oracle's short term greed leaves us with the question if they even have any credible long term plans.


  1. Regarding Java on Mac and the Mac App Store.

    Don't you think that Oracle may put OpenJDK in the AppStore as a free install? The question then is if Apple builds the AppStore with dependency capabilities. Then developers of Java Apps could list Java as a dependency, and the AppStore application would automatically first install Java.

    The Linux tools apt-get, port and yum all handle dependencies, but hoping for Apple to implement such an elegant solution is perhaps too much?

  2. Cominvent: they may, but it still won't change the fact that Java is no longer going to be available by default on OSX.

    Sure, Apple may create a dependency resolution system in their app store, but I wouldn't bet on it because it makes quality assurance much, much harder and Apple care deeply about the user experience.

    Also, if you look at Maven and the Java community: if it is percieved as easy to introduce dependencies you foster a certain type of carelessness. A lot of Java projects have a obscene number of dependencies because people don't really care. And it makes software very brittle and fiddly.

  3. True. I certainly hope Apple at least will consider a strictly controlled dependency system where THEY get to choose which components apps can depend on. Java and other programming platforms would be an obvious such choice.

    I'd love to see Apple make a deal with MacPorts and integrate it into the AppStore, so you could install command-line utilities as well from the same GUI.

  4. Cominvent: it would be great if they allowed at least some dependencies to be resolved this way. Perhaps have a special approval process for components/software that can be automatically installed as deps. But again, it may prove too complex for Apple's quality assurance.

    Runtime environments would be a good candidate indeed, but then again, Apple seem to strongly favor Objective-C. Probably not so much because they think the language is superior, but because it will focus people towards developing exclusively for Apple products.

    (Kinda funny that in a time when Apple are angering lots of developers by so strongly encouraging Objective-C to tie people into iPad/iPhone/OSX development, Oracle is doing the opposite with Java by attacking Android because they would rather risk Java than share the success with someone else...)