The Java Conundrum

Guru Kini
6 min readNov 21, 2018

So Java 11 is out. Although the release notes may suggest that this is a usual release with some new features, there is another thread in the background that’s confusing the hell out of everybody. The buzz is that Oracle has changed the Java licensing and Java is not free any more.

It took me a while to figure out what’s going on by sifting through articles, podcasts, tweets and various other sources. And it is clear as mud. However, it is important to understand there is no reason to panic.

Well, almost no reason to panic.

So what exactly has changed?

There are 3 big changes:

a) Java SDK (Major) Release Schedule

b) Java SDK licensing

c) Oracle JDK and Open JDK parity

Release Schedule

Historically, the Java SDK Major version (e.g., 7, 8, 9, etc.) was released sporadically. It took years for a new major version to come out. With JDK v10, this big bang update to the next version of Java has somewhat changed. To illustrate, source code change from 9->10 was less than 15% of what it was for 8->9. v10 might as be a considered minor update by the standards of earlier JDK releases. Ditto for v11.

Going forward, Oracle is pushing for a biannual release of the JDK version (X+1) — this is the Java Release Train. Every 6 months, a new JDK version will be launched, with Early Access (EA) versions available every 3 months. Oracle’s goal, it appears, is to spur rapid growth in Java by following this “agile” cadence of delivery. This will enable contributors to push changes faster and developers to access the new features. The earliest thoughts on this (that I could find) were from Java Platform Group’s Chief Architect, Mark Reinhold, back in mid-2017. Dr Reinhold believed correctly that Java’s 2 year+ release cycle is not conducive to rapid innovation and not in sync with how the rest of the software world delivers updates.

So in theory, with quick & timely feature releases, Java should bring about new features without breaking much. 9->10->11 seem to have smooth transitions for the most part. (But watch this space!)

In addition, the concept of Long Term Support (LTS) releases, like v8 and v11, which will be announced every 3 years or so. LTS releases will have extended support periods (both free and paid). We will come to what support means in a bit.

Java SDK Licensing

Creative Confusion — by Joe Pemberton via Flickr

This is what confused the community most. So basically, Oracle has announced that the official Oracle JDK will need a paid support license for commercial purposes. That is, you are free to use it on your dev machine, but for production environments, you will have to pay Oracle for commercial support.

Twitter and Blogs are full of speculations on how this will be the end of Java. Stop. Wait. Think. It is hard to kill an open source language like Java overnight. The panic around the licensing fees is not truly justified. Oracle JDK is just one of the variants of the SDK we can use. Java is far from over :)

Fact is that Oracle JDK is one of the several existing JDKs available today. OpenJDK is the most popular alternative.

There are 2 camps of speculations — one thinks that Java is no longer free, the other thinks they can stick their current v8 version and don’t care about the support. These are both incorrect views.

Java is still free to use and deploy — you can always opt for one of the free JDKs. The difference between these JDK providers is how long will they support the older versions. For example, Oracle will still provide free, public updates for JDK v8 till Jan 2019. If you have the Java SE subscription, Oracle will support v8 for you till about 2025! After Jan 2019, OpenJDK updates for v8 will continue to roll in till around Sept 2023. The only difference is the Oracle will stop contributing to OpenJDK’s v8 updates and some like Red Hat will take the baton. Note that Oracle will still contribute to the newer versions, along with other contributors. There are several other JDK vendors, who offer both free and paid support.

Many people have stable systems running on v7 or v8 that have not been updated for years. So some people argue that the licensing confusion doesn’t bother them as they will never migrate their stable system from the current version. Why fix if it ain’t broke, right? Well, the problem is that the older versions could potentially have security holes, performance issues and other quirks that could be disastrous for these legacy systems. So while your system may chug around indefinitely in an ideal world on the older JDK, a zero-day exploit detected in the JDK may not get a security patch. This is the stuff of nightmares for enterprises. Hence, it is important to stick a JDK that is actively supported.

Oracle JDK and Open JDK Parity

Prior to v11, Oracle JDK was a superset of OpenJDK, which itself is a superset of Java SE. While the additional features of Oracle JDK may not be significant enough to most of us to stick to Oracle JDK, there are some claims that Oracle JDK is more performant than Open JDK (honestly I have no idea about this piece).

Over the last year, Oracle has worked hard to contribute almost all the additional features of Oracle JDK to Open JDK. So with v11, the 2 JDKs are at par. So essentially, Oracle is not leaving the dev community hanging with a Hobson’s Choice of JDK. Switching over to Open JDK should be possible for most of us. Open JDK could probably become the de facto JDK. Most cloud instances and package managers anyway use this by default.

So what next?

Well, first — don’t panic :). Next, check the JDK versions on your production server. If they are not Open JDK, perhaps you should see if you can switch over to Open JDK.

If you are on an older version of JDK (v7 and lower) — it is recommended that you migrate to v11 (v8 at least). If it is not possible, raise a flag with your management and see if you can switch to an alternative JDK with commercial support (e.g. Azul).

v8 is an LTS release and will have support for the next few years at least, so you are OK. But do plan to migrate to v11 by 2020. Try out v11 or higher for your next project. At some point, we will have to switch — might as well start early.

References

This was such a complicated issue that I had to go through several lucid online resources before I could understand what was going on.

--

--

Guru Kini

Technology. Software. Leadership. Metrics. (Only opinions, no facts here).