React, etc. Tech Stack

React, Flux, GraphQL, Hack, HHVM...? All of this and more!

Oracle to stop providing a free Java (JDK) with Long Term Support (LTS)

Oracle is making big changes to the Java ecosystem it acquired as a part of the Sun Microsystems deal in 2010. Since that time the ecosystem of Java has continued to thrive, you could say it is experience a renaissance of sorts.

Languages targeting the JDK have sprung up and the latest Java releases have brought great improvements in the core language itself. The development of Java 9 faced significant delays, because of the new module system but otherwise as well. In a nutshell: Making big software releases continues to be a challenge.

In the current world development of software velocity and nimbleness are key. The Java development team is moving from a two-year release cycle to a six month one. Frequent releases are a common practise, if not a requirement, in the contemporary software development scene, from browsers to web frameworks and even operating systems.

Each release is only supported until the next one is made available. In the case of a core piece infrastructure such a language runtime this is not necessarily desirable. This is why LTS (Long Term Support) releases are now released by popular open source projects like Ubuntu and Symfony. This provides a level of stability for developers to work with.

Official Oracle JDK LTS releases to be available commercially

The details of the plans to accelerate development of Java includes tthe following statement about LTS releases and their meaning for organizations running on mission critical system systems:

Enterprises that prefer stability, so that they can run multiple large applications on a single shared Java release, can instead use the current long-term support release. They can plan ahead to migrate from one long-term support release to the next, like clockwork, every three years.

This is as in many other projects, except it seems that releases of the LTS version, dubbed to be Oracle JDK, will no longer be free. This means that companies looking to stay on a specific version for more than six months would need to get updates from a commercial operator or apply patches from later free OpenJDK versions manually.

The timeline is shown in the slide below, which shows that the last LTS version (10.0.2) of the LTS Oracle JDK would take place in in July of 2018:

Java JDF roadman

Is Oracle an aggressor or just trying to make an honest buck?

Oracle has a (bad) reputation for being a very aggressive company. Traditionally it has been pursuing activities to protect it's financial interests in and out of court. The most notable was the brawl with Google on the use of Java in the Android platform. In 2016 Oracle started aggressively enforcing Java SE licensing.

While extended support will not be available for free, the two versions (Oracle JDK, OpenJDK) are not expected to branch and keeping older versions of OpenJDK can be kept up-to-date with patches. Oracle will not make them available for free. There would no be any proprietary features such as Project Detroit, an effort to embed the V8 JavaScript engine to JDK.

Many have been weary about the future of Open Source projects that have fallen into ownership of Oracle. Notable examples are Java, VirtualBox and MySQL. For MySQL this has materialized in a for MariaDB that is now a separate project. For Java it is possible that an Open Source project, AdoptOpenJDK, will provide free LTS releases for free OpenJDK.

All of the above is yet to be officially confirmed. And in any case it is difficult to see if Oracle is trying to be aggressive and capitalize on intellectial property it owns. After the positive progress of the Java ecosystem has been making, it would be a shame if this negatively impacts the popularity of it and languages like Clojure, Kotlin and Scala that run on the JVM.

Written by Jorgé on Wednesday February 21, 2018

Permalink - Tag: java

« State of WebAssembly in 2018: Browser support, dev tooling and specifications on track - TypeScript to WebAssembly »