The Evolution of Java: Time-Based Release
A developer discusses the new time-based release scheme introduced by Oracle to ensure that new versions of the language are released faster.
Join the DZone community and get the full member experience.
Join For FreeThe Java programming language celebrated its 25th anniversary in May 2020. It was initially developed at Sun Microsystems by a developer named James Gosling and first released in May 1995. Sun 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 faster 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, and made security stronger. These recent changes, especially to Java Standard Edition, which is used by millions of developers, are so important. Java developers rely on the JDK (Java Development Kit), which packages and distributes the 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.
Since the 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 to be an 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 a “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 an “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 will most likely choose an “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, where other organizations build JDK binaries from that source code. The 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. This means 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 pass the TCK can be described as “Java SE compatible.” By the way, in order to be described as “Java SE,” a commercial license should be obtained from Oracle. Currently, there are several OpenJDK builds provided by different vendors.
Below you can find a list of some OpenJDK builds and comparisons:
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
Java is still available at zero-cost
Time to look beyond Oracle’s JDK
Opinions expressed by DZone contributors are their own.
Comments