The Evolution of Java: Time-Based Release

The Java programming language has celebrated its 25th anniversary on May 2020. It was initially developed at Sun Microsystems by a developer named James Gosling and first released on May 1995. Sun has introduced the slogan “Write Once, Run Anywhere” to describe Java’s unique cross-platform capabilities.

Throughout its 25 year history, Java has been developed at an irregular pace. The release cadence of new versions has often been irregular and very long due to the delays in the development of large features in new releases. This also slowed down the innovation of language while other languages with fastened feedback periods evolved.

In 2017, a new time-based release cadence was proposed and adopted to allow Java to ship new feature releases every six months without delaying them for large features. In addition to the new time-based release cadence, Oracle has announced major changes in how Java will be released, licensed and supported. The ultimate goal of these changes is to keep Java competitive with other languages that evolve at a faster pace.

This proposal will, ultimately, affect every developer, user, and enterprise that relies upon Java. It will, if successful, help Java remain competitive — while maintaining its core values of compatibility, reliability, and thoughtful evolution — for many years to come.
Mark Reinhold, Chief Architect, Oracle Java Platform Group

The latest Java versions have introduced new language features, improved JVM performance, made security stronger. These recent changes applying especially to Java Standard Edition which is used by millions of developers are so important. The Java developers rely on the JDK(Java Development Kit), which packages and distributes Java Standard Edition. When we migrate Java, actually, we upgrade the JDK and then ensure the functionality of the applications whether they perform correctly on the new version of the JDK. The JDK is used by Java developers for many tasks required to develop, build, deliver, operate, and maintain Java applications. When migrating to a new Java version, these areas and activities should be evaluated initially to determine how they are impacted.

Image for post
Image for post

Since, new release cadence affects important decisions about the development and maintenance of Java applications, developers must understand it well. Before Java 9 and the new release cadence, the JDK has been released pretty inconsistently. With the new six month release cadence, Java has evolved faster and consistently. It might seem overwhelming at first glance, but there’s a strategy behind the new cadence and ways to navigate it. The new cadence has the concept of feature releases that are delivered every six months. These releases are supported for six months receiving quarterly updates for critical security patches and bug fixes. Every three years, a release is considered as LTS(Long Term Support) release. LTS releases receive support after the next LTS release. This provides developers enough time to make the migration to the next LTS version. With the time-based release cadence, new language features are shipped faster than the previous approach.

Java developers have to choose between two migration strategies. If they choose “minor migration strategy”, then they migrate to the new releases every six months. So they can use the new language features and benefit from any performance improvements immediately. Moreover, they will receive quarterly updates for security patches. If they choose “LTS strategy”, they migrate to the new releases every three years. So, the change rate for applications is lower. Many enterprises with large investments in Java most likely choose “LTS strategy”.

The release cadence is an important migration consideration, but not the only one. Around the same time the new release cadence was announced, Oracle announced some other important changes about JDK support and licensing. These announcements made Java developers question whether Java was still free. Thanks to the OpenJDK Project, Java is still free. OpenJDK is an open source project that contains the latest implementation of the Java platform. The project is led by Oracle with participation from other major companies, such as Red Hat and IBM. OpenJDK is only focused on Java source code, other organizations builds JDK binaries from that source code. Most popular JDK binary distributions used by developers, such as the Oracle JDK, AdoptOpenJDK and others are based on downstream repos of the OpenJDK source code. By the way anyone can produce a build from that source code and publish it. But the validity of the build can be ensured with a distinct certification process. Certification is run by Java Community Process which provides a TCK(Technology Compatibility Kit). OpenJDK builds that passes TCK can be described as “Java SE compatible”. By the way, in order to be described as “Java SE”, a commercial license should be gotten from Oracle. Currently there are several OpenJDK builds provided by different vendors.

Below you can find a list of some OpenJDK builds and comparisons:

Image for post
Image for post

In this post, I have tried to share my notes on Java’s new time-based release and licensing subjects. I hope you enjoyed it. It would be appreciated, if you could share your experiences and notes, too.

Resources

JEP 322: Time-Based Release Versioning

There’s not a moment to lose!

Java is still available at zero-cost

Time to look beyond Oracle’s JDK

Oracle JDK Releases for Java 11 and Later

Java to Move to 6-Monthly Release Cadence

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store