spainter_vfx - stock.adobe.com
Oracle Java licensing explained: Addressing complexity, cost and audits
Now that Oracle Java SE is sold as a subscription, organisations using the Oracle JDK have a minefield of licences to navigate
Organisations using Java face a licence fee hike after Oracle’s introduction of subscription pricing for Java SE.
Analyst Forrester has previously written that the move to what Oracle calls the Java SE Universal Subscription promises to eliminate the burden of tracking installations. However, as Forrester points out, the cost may be steep.
“You’ll need to identify all Java installations and, if possible, the associated agreement. You’ll want to be sure to enforce oversight on new Java installations. Now, as much as or possibly more than ever, pay attention and maintain good Oracle software asset management practices. Doing so could save you from a big unbudgeted licensing fee surprise,” the analyst firm said.
IT departments need to use IT asset management tools to check that the Java software running in their organisations is licensed correctly.
In 2023, Gartner reported that in the 12-month period leading up to 31 December 2022, 52% of the Oracle software compliance and audit-related interactions focused on Oracle Java. This is an ongoing concern because Java is almost 30 years old and is embedded in applications across enterprise IT.
Where is Java used?
As part of a recent study looking at Java, observability platform provider New Relic reported that Oracle was the most popular provider of the Java Developer’s Kit (JDK) in 2020. It estimated that Oracle accounted for almost three-quarters of the Java market.
However, it noted that there has been a noticeable movement away from Oracle Java since then, following on from the introduction of a more restrictive licensing, which came into force with Oracle Java 11.
While Oracle Java 17 is regarded as more open than Java 11, data from observability tools company New Relic shows that there has been a steady decline year over year (YoY) since then. While New Relic’s data shows the Oracle JDK was the most deployed version of Java in 2022 (34%), it slipped to 29% in 2023, and as of 2024, it now accounts for 21% of deployed Java. According to New Relic, this represents a 28% decrease in one year.
While there are plenty of reasons why organisations have moved off Java, resulting in less Oracle JDK deployments, the cost of software licensing is regarded by many as a major contributing factor.
What are the differences between Oracle Java licences?
Oracle offers three different licences for Java plus a host of Java products requiring Oracle licences, such as Java SE and Oracle Java SDK – the software development toolkit for building Java applications. There is also the JRE, the Java runtime environment. Oracle offers OpenJDK, an open source version, which is released under the open source GNU General Public Licence v2, which further complicates Java audits.
All the different permutations of Java products an organisation may have deployed complicates IT asset management, especially given that Java has been used in organisations for almost 30 years.
Java licensing checklist
- Run a Java inventory to check which versions of the JDK are deployed.
- Audit commercially purchased applications, which may rely on specific versions of the JDK.
- Check whether the risk of running an older version that meets the requirements for the free Oracle binary code licence is worth taking.
- Decide on the subset of applications where the JDK will need upgrading to comply with Oracle no-fee terms and conditions licence.
- Prepare a list of applications to migrate from Oracle JDK to an OpenJDK distribution that is TCK-certified.
- All other applications that use the Oracle JDK will need to be covered by an Oracle Technology Network Licence agreement.
Discussing the challenges, Simon Ritter, author of OpenJDK migration for dummies, Azul special edition, says: “For the Oracle JDK, there are three different licences.”
The first of these is the Oracle binary code licence (BCL), which is what Oracle inherited when it acquired Sun Microsystems. According to Ritter, this is basically aimed at embedded use and provides free use. “There’s no requirement to buy a support subscription,” he says.
Oracle states that Java SE versions released prior to 16 April 2019 are the only versions licensed under the BCL licence. It is no longer used for new releases.
The second licence is the Oracle Technology Network licence agreement, which requires a Java subscription for enterprise use. This can be extremely costly since Oracle bases the licence fee on the number of people employed in the organisation.
“The whole licensing thing is really quite complicated,” Ritter says, “because Oracle then introduced a third licence, which is called the no-fee terms and conditions licence (NFTC).” Ritter says this allows organisations to use Java for free for internal business applications. However, “the downside is that it only applies for three years”, Ritter warns.
On its website, Oracle states that the NFTC covers six-month releases of Java 22 and later. Releases of Java 21 are covered up to 2026. Java 18 is supported under the NFTC up to January 2024, while the free support is only available on Java 17 if organisations are on Oracle JDK releases prior to version 17.0.13.
This new third option, according to Ritter, means one year after the next long-term support release of Oracle JDK, the licence will revert to the Oracle Technology Network Licence agreement, which requires customers to buy a Java SE subscription.
“It is complicated, but essentially means that if you want to avoid having to buy the subscription, you have to update Java every two years, when Oracle brings out a new long-term support release,” says Ritter.
Why stick with Java?
Java 21 was released in September 2023. New Relic notes that this version offers notable improvements in virtual threads and upgraded libraries, as well as advancements to syntax. According to New Relic, these enhancements put Java on par with many more modern languages.
There is also the fact that the Java runtime environment provides just-in-time compilation of source code. This means that optimisation occurs only when the Java application is run. The advantage of this approach is that a Java application can easily take advantage of the latest advances in processor technology.
The latest data collected by New Relic, for its 2024 State of the Java ecosystem report, found that in the six months after the release of Java 21, 1.4% of applications monitored by New Relic were using it. This represents a 380% increase in adoption compared to when Java 17 was introduced.
New Relic noted that the adoption rate of Java 17 far exceeded what the developer world saw when Java 11 was introduced. About a tenth (9%) of applications were using Java 17 in production in 2023, and now 35% of applications are using Java 17, representing a nearly 300% growth rate in one year. According to New Relic, it took years for Java 11 to reach this level.
What are the alternatives to Oracle Java?
Azul is a company that sells an alternative to the Oracle JDK. Others include JDKs from Amazon, Microsoft, Red Hat and SAP among others.
These tend to offer what is known as Technology Compatibility Kit (TCK)-certified, which guarantees Java SE compliance, as Ritter explains: “If you move from Oracle to a different OpenJDK distribution, your application is going to run in exactly the same way as before.”