How to decide on jdk version - Oracle's shorter release cycle

Viewed 633

I am getting confused by the new short release cycle paradigma of Oracle. Here is a table with support dates: enter image description here

Java 8 has a bigger support window than most of the following Jdk. Java 9 is supposed to be End of support now, same for java 10.

It becomes a non trivial task deciding on a jdk version.

Oracle introduces the therm of Long therm support release. What does this mean for the Non-LTS versions ? Are they similar to the minor releases ?

2 Answers

In the past, Java major releases often tended to be loaded with far-reaching features that had a massive impact on the code that you could and should write, like generics (Java 5), functional constructs (Java 8), and modules (Java 9). Such releases took a long time, and often involved delays for various reasons.

Presumably drawing a lesson from this, Oracle decided to overhaul the development style for Java to be more incremental or "agile", if you like. Instead of having feature-loaded major releases that can sometimes take many years to finish, they want to publish major releases with fewer new features, each in a fixed release schedule every six months.

Java 10 was the first version under this new release model, and Java 9 already got deprecated with the release of Java 10. Java 11, which was released in September 2018 is a Long Term Support (LTS) release with support until 2026 (Source). This is very similar to what many are used to from the Ubuntu release model (On a side note, they even planned to replace the version numbers with something involving the year and month of release or so, similar to what Canonical is doing with Ubuntu, but dropped that idea for some reason).

Using a non-LTS version of Java now implies a commitment to update your software that uses the JDK every 6 month. It shouldn't be as involved as migrating code from one major Java version to another in the past because, as described, the language changes are supposed to happen in a more incremental way, but it's definitely something to consider. If you don't want to make this commitment, you should stick to the LTS versions, which means to stick with Java 8 or Java 11.

For a new "greenfield" project, Java 11 is most probably the best choice by now. But it might be necessary to stick with Java 8 if the toolchain to be used does not fully support Java 11 yet.

I hope this will help.

If you can upgrade to the latest JDK every six month, pick the latest version. Otherwise pick the LTS version; if the next LTS is going to be released soon (before your release date), then you might want to use the latest version and switch to the LTS before your release.

Also, Oracle JDK is now (since 11) fully based on the OpenJDK project, so any OpenJDK build from your favorite vendor might be just as good a choice for you as Oracle JDK -- or even better.

Related