Google to Move To OpenJDK for Android N
There is a lot of speculation about Googles apparent move to the Open JDK. In this post I want to outline what this means for Android development moving forward.
What is the OpenJDK?
There are two versions of Java, the proprietary version of java distributed by Oracle (who purchased it from Sun Microsystems, the original creators).
There is also an open source version of Java.
In the OpenJDK FAQ you can see that Oracle actually support and contribute to it, as to other companies like IBM, Apple, and yes Google have contributed to it in the past.
So the open source version is well supported by lots of companies and is generally free to use without restrictions compared to the proprietary version of Java.
Whats the problem?
Android provides to developers certain API libraries for Java development. Much of this is developed by Google themselves, but some of it is based on the Java programming language itself, and specifically code from the proprietary version of Java.
Google and Oracle have been battling it out in the courts for years. Oracle sued Google for copyright/patent infringement in 2010 claiming Google had no right to use their Java code from the proprietary version without permission.
What was announced?
Google have apparently decided to move all their codebase over to the openJDK version of Java, at least if you can believe posts like this which seem to confirm it.
At this stage, its all rumours. I would expect official confirmation to show up on Androids official blog but as of the date of this post, nothing has shown up. So bear in mind until we hear it from the horses mouth so to speak it may not end up happening anyway.
A post on a blog saying “google has confirmed it” means nothing until we see an official response from Google, which currently does not seem to be available.
So what does this mean for Android developers if it does happen?
Probably not a lot.
The aim of OpenJDK is to have an open source version of Java than is code compatible with the proprietary version. The project has been going since 2007, is still contributed to by Oracle (owners of the proprietary version) and other companies like IBM, Apple, and many linux distributions like Ubuntu, etc.
Switching over to openJDK makes sense for Google to do to free itself from any problems with the court case with Oracle.
The bottom line is that most of this functionality occurs “behind the curtains” in the Android operating system, so as Android developers, whether google decide to release a new version of the Android using the proprietary version of Java, or the open source one is largely irrelevant.
We write our code accessing the same libraries, and things just work. Of course its going to be a decent chunk of work for Google to get this all working so that we dont have to worry about it, but if anyone has the resources to do it, Google do.
I believe its largely irrelevant whether the proprietary version of open source version of Java is being used. Java is not going away from Android any time soon. Google have a huge and ongoing history of ensuring that developers of Android apps are able to target old versions of the Android operating system because they know this is essential given that Android device users are much slower to update than their iOS counterparts.
As a result, no matter what, I believe Google will make things “just work” in the new release of Android N which will feature openJDK (if they ultimately confirm this).
What do you need to do as an Android developer?
Absolutely nothing, its business as normal! You dont need to change anything in your development process and it may well be that when Android N arrives you wont have to either.
So fire up Android Studio, and get back to coding!