With the release of JDK11, Oracle’s new JAVA SE Support Policy brings sweepings changes to the Java Enterprise community.
Others have already created great explanations of the changes to come, so I won’t repeat their work here. I do, however, have some thoughts to share on how these changes will affect Liferay Portal and DXP users.
Starting with JDK11, you will no longer be able to use Oracle JDK for free for commercial purposes.
All commercial projects will require a subscription/service from Oracle to get the Oracle JDK. The majority of Liferay users are commercial users who deploy on Oracle JDK. If you don’t pay for support from Oracle for their JDK or one of their other products, you’ll need to start paying in order to continue using Oracle JDK.
OpenJDK binary is now your free option.
Oracle will continue to provide a free alternative with their Oracle OpenJDK binary. There will also be others such as Azul, RedHat, IBM and AdoptOpenJDK that will provide their own binaries. For now, Liferay has only certified Oracle's OpenJDK binary. We have to yet to determine whether all OpenJDK libraries can fall under the same name or if we need to certify them individually.
A new JDK will be released every six months and some of them will be marked as LTS releases.
Prior to JDK9, all JDKs were essentially Long Term Support (LTS) releases. Users received bug fixes for years, which allowed use to delay moving to a new release. Now, we’ll see a new JDK release every six months, but not all will receive long term support.
As of now, Liferay has decided we will not certify every single major release of the JDK. We will instead choose to follow Oracle's lead and certify only those marked for long term support. If you’ve seen our latest compatibility matrix, you may have noticed that Liferay did not certify JDK9 or JDK10. We instead plan to certify JDK11, JDK17 and JDK23, which have been marked as LTS. This is subject to change.
Oracle will only guarantee two updates per major release.
JDK8 has received 172 updates since its release. In contrast, JDK9, the first release that Oracle implemented this policy, has had four updates, while JDK10 only received two updates. Although JDK11 is designated as an LTS release, there is no guarantee of more than two updates from Oracle.
We will have to wait until JDK12 is released to see what will happen with JDK11. Perhaps I’m optimistic, but I believe that the Java open source community will continue to backport security issues and bugs well after Oracle decides to stop. We’ll have to wait and see.
January 2019 will be the last free public update for JDK8.
If you’re a Liferay user and you have not made a plan for your production servers, please start!
Below are the paths that are currently available, but these are in no way recommendations provided by Liferay. It is up to you to make the best decision for your own company.
- Continue to use Oracle JDK8 without any future patches
- Continue to use Oracle JDK8 and pay for a subscription
- Switch to Oracle JDK11 and pay for a subscription
- Switch to Oracle OpenJDK11 binary (knowing that you’ll have to make this decision again in six months)
- Switch to a certified version of IBM JDK
I will try to update this list as more options become available, e.g., if we decide to certify AdoptOpenJDK, Azul Zulu, RedHat JDK and so on.
I am eager to see how the rest of the enterprise community reacts to these changes.