The next Java Long Term Support (LTS) version, Java 17, has been released. We thought this would be a good time to give you a short refresher on the Java versioning and why Payara Platform only runs on LTS versions.
What is Java LTS?
LTS stands for Long Term Support and was introduced with the release of JDK 9 in 2017. During the development of Streams, Lambdas, and the modularity (project Jigsaw which resulted in the JPMS system), it became clear it was sometimes a struggle to have regular releases alongside the major features.
As many people know, when you're dealing with software development, you can estimate and plan a feature - but all kinds of setbacks can delay the finishing of the project. Therefore, a 6-month release cadence was adopted for the JDK starting with Java 9 in September 2017.
Features, functionalities, and all kinds of other changes that are ready at the time of the release, which is always set for a fixed date during the year, will be included as part of that release. If something takes more time then it will be available in the next release, which is a maximum of 6 months later. With this type of release cadence, features continue to be available on a regular basis for developers.
In addition to new features and language constructs, developers and companies also want to have stability. As with any new release containing new stuff, things might not work, or your code may need slight modifications to work with the changes within the JDK. Therefore, every 3 years a Long Term Supported version will be released. The vendors support this for a long period, 8 years seems typical, so you can 'stay' on the same version but still get regular bug fixes and security updates.
The versions in between those LTS versions are typically only supported for 6 months by a vendor, as by that time, another version is released and you can't have a multitude of versions that you want to support. With the availability of both the LTS and the 6 months cadence, you have the option of going with the latest, which forces you to upgrade every 6 months, or staying with the LTS version where you can keep your codebase more stable.
Why Does the Payara Platform Only Support LTS?
The Payara Products are a rather complex combination consisting of many other products, libraries, and code that deliver you the Jakarta-certified solution for Java Enterprise. We are using EclipseLink as JPA implementation, Jersey for Rest, Apache Felix for the OSGI container, and Jackson for JSON support, to name just a few.
This means that not only does our code need to be updated for a new JDK release, but we also need to wait on the other products and libraries to do the same. By the time all our dependencies are upgraded and we have changed our code and tested out the product, the 6 months are almost over. And when a new JDK release comes out, the previous one is no longer supported and thus our users can run the Payara Platform products on a supported JDK.
And in most cases, Enterprise applications prefer stability over new features, as they put more focus on the end-user functionality than the underlying technology. We've found there are not too many customers who want to run the Payara Products on the newest JDK version.
Payara Platform Plans for JDK 17
Java 17 is again an LTS version just as Java 8 and 11 were, and as such the Payara Platform is planning to support JDK 17. We are currently working on the required changes so that Payara Server 5 and Payara Micro 5 can also run on this new version, and at the same time can still be run on Java 8 and 11. When all our dependencies can run on this newest version along with the previous versions, and all our testing is finished, we will announce the capability of running on this LTS version.
Payara Platform Chooses Stability
Java 17 is a Long Term Supported version where features and functionality are stable and only bug fixes and security fixes are applied. Since the 6 month releases are not supported after another release comes out, Payara Products are not supported on these interim releases as most of the time we have to wait on dependencies to be available for them.
Payara products run on Java 8 and 11, and we are currently working to make the Payara Products also run on Java 17. And with the upcoming release of Jakarta EE 10, Java 17 will also be officially supported by any compliant runtime like Payara.