Are you confused / worried by the recent Oracle Java licensing changes? Are you weighing up OpenJDK vs Oracle JDK but don’t know where to start? As a Java Champion and two-time recipient of the JavaOne Rockstar award, we asked Simon Ritter, Deputy CTO of Azul, for advice.
In 2010, Oracle acquired Sun Microsystems and became the owner of the Java trademark. Sun had already released the source code to Java through the OpenJDK project, but Oracle continued to provide a binary distribution of Java as the Oracle JDK.
Initially, this was provided under the Oracle Binary Code License. This was essentially the same as Sun’s license and permitted free use of the JDK anywhere except for embedded or single-use applications, e.g., a ticket kiosk.
In 2017, it was announced that there would be a major change to the release schedule for the OpenJDK. Rather than being feature-driven, resulting in anywhere from two to four years between releases, it would now be time-driven. Since JDK 9, there has been a release every six months, in March and September. Oracle also announced that, because of the much faster cadence, they would not provide extended support and maintenance for all releases, as they had previously done. Instead, only specific releases would be classified as long-term support (LTS). As the most popular JDK in use at the time, JDK 8 was classified as LTS; the next was JDK 11. Subsequently, LTS releases would be every three years. This provided stability for those deploying in most commercial environments, while allowing developers to explore and test new features as they were released.
In 2018, with the release of JDK 11, Oracle made a significant change to the license for the Oracle JDK. The new license was called the Oracle Technology Network License Agreement (OTNLA). This placed many more restrictions on where the Oracle JDK could be used freely, namely for personal use, development and testing, Oracle-approved applications and in the Oracle Cloud. All other use cases required the purchase of a Java SE Subscription. What had an even more dramatic impact on users was that this license was also applied to Oracle JDK 8 from update 211, released in April 2019. Suddenly, anyone using Oracle JDK 8 to run enterprise, mission-critical applications would need to pay for security patch and bug fix updates.
This led to a proliferation of OpenJDK distributions, giving users a range of alternatives.
The pricing for Oracle’s Java SE Subscription was based on a core count (and Oracle-specified multiplier) for server-based applications and a user count for desktop-based ones. This meant that costs were directly linked to Oracle JDK usage.
With the release of the next LTS version of Java, JDK 17, Oracle made two further changes. The first was to reduce the time between LTS versions from three years to two. The second was to use another new license, the No Fee Terms and Conditions (NFTC). This extended the places where the Oracle JDK could be used without a Java SE Subscription to include “…internal business operations”. However, being rather ambiguous, this did not clarify whether a web server being run within a data centre but externally accessible to customers would be classified as internal business operations.
In addition, the new license did not apply indefinitely to Oracle JDK 17. The NFTC would only be applicable until one year after the release of the next LTS Java version. After that, the license would revert to the more restrictive OTNLA. Since the time between LTS releases is now two years, Oracle JDK 17 users must be aware that the license will change in September 2024.
The most recent Oracle licensing and pricing change was announced in January 2023. The Java SE Subscription has been replaced with the Java SE Universal Subscription. This does not alter the licensing terms but does change how the subscription price is calculated. Rather than using core and user count, the price is based only on how many employees a company has. That includes all full-time and part-time employees as well as contractors. In addition, if a company is outsourcing any part of their Java operations, the count must also include staff from the outsourcing company that work on this.
For many users, this will significantly increase the cost of using the Oracle JDK. Even if only a tiny percentage of employees use Java-based applications, the price is the same as if every employee does.
If free, unsupported distributions of OpenJDK are unsuitable, other options exist, such as Azul’s Platform Core. This delivers TCK-tested OpenJDK binaries with all updates, including security patches and bug fixes for JDK 8, 11 and 17. (TCK testing gives assurance that the JDK is a drop-in replacement for the Oracle distribution). If older versions are still in use, both JDK 6 and 7 binaries are available but are not TCK-tested. This is due to Oracle’s withdrawal of the testing license when it stopped offering commercial support for these versions.
Is it time to review your Java usage?