Get ready for more Oracle Java licensing changes
It is said that the only constant is change, which is abundantly clear with the licensing of Oracle Java. Since 2018, with the introduction of a new OpenJDK release cadence and specific long-term support (LTS) versions, we've seen four significant modifications to both the license conditions and pricing, which have had an impact on enterprises using Java within their organisations.
Initially, we saw the introduction of the Oracle Technology Network License Agreement (OTNLA). Prior to this, everyone had considered the Java platform to be free, including maintenance in the form of regular updates (technically, the field of use restriction meant you would need to pay a license fee if you used it for embedded or single-use applications).
The OTNLA is much more restrictive. Unless you are using the Oracle JDK for personal use (like playing Minecraft), development, testing, Oracle-approved applications or in the Oracle Cloud, you will need to pay to buy a Java SE Subscription. The OTNLA applied to Oracle JDK 8 update 211 and later, as well as Oracle JDK 11.
When the next LTS version of Java, JDK 17, was released in September 2021, Oracle introduced another significant revision to their license policy – the No Fee Terms and Conditions (NFTC). On the surface, this appeared less restrictive and states that you can use the Oracle JDK:
"...for the purposes of developing, testing, prototyping and demonstrating your applications, and running the program for your own personal use or internal business operations."
What constitutes "internal business operations" is not specified in the license (or elsewhere). Based on this, many users have chosen to use the Oracle JDK 17 and subsequent updates to maintain the security and stability of their applications without the need to purchase a Java SE Subscription.
However, the NFTC comes with a time limit. According to the Oracle JDK licensing frequently asked questions, "LTS releases, such as JDK 17, will receive updates under this license for one year after the release of the subsequent LTS." When JDK 17 was released, the cadence of LTS versions was changed to two years rather than the three years it had been previously, translating to a free period of three years for any given LTS release.
The subsequent LTS version is JDK 21, which was released in September 2023. This means that the free period will end next month in September 2024. At this point in time, the license for Oracle JDK 17 will revert to the OTNLA, and users will be faced with a set of choices for their applications:
- Follow the terms of the OTNLA and pay for subsequent updates, the price of which is based on how many people a company employs. According to the Java SE Universal Global Price List, this is "...all of your full-time, part-time, temporary employees, and all of the full-time employees, part-time employees and temporary employees of your agents, contractors, outsourcers, and consultants that support your internal business operations."
- Move to the next LTS release, JDK 21. This is covered by the NFTC, so a Java SE Universal Subscription is not required. While this might seem like a simple choice, it is worth considering some of the details before opting for this:
- Although Java has demonstrated excellent backward compatibility over its lifetime, there is no guarantee that your application will work as expected on JDK 21. Since JDK 9, not only have new features been added to the platform, but some older, infrequently used ones have been removed. Depending on the age and complexity of the application, this may cause issues.
- Having moved to JDK 21, you will only have two years before you need to move to JDK 25 to avoid being caught by JDK 21 reverting to the OTNLA. You will then need to continue moving to the next LTS release every two years.
- Move to an alternative Java distribution. One of the most powerful aspects of Java is the OpenJDK project. There is a wide choice of OpenJDK distributions, which are tested against a licensed version of the Technology Compatibility Kit (TCK). This is part of the Java SE specification and can be used to confirm that the distribution is functionally identical to Oracle Java SE. Alternative distributions of OpenJDK are still free to offer differing levels of features, support and cost. This will undoubtedly be cheaper than option 1, typically as much as 70%, and with the appropriate vendor selection, provides the user with a considerably longer timespan before needing to move to a newer version.
As you can see, there is much to consider if you use Oracle JDK 17 to run enterprise applications, especially if your users depend on them. Luckily, there is still time to plan accordingly before the next license change and impending Oracle bill.