Oracle has introduced the “Oracle No-Fee Terms and Conditions (NFTC)” license for the Oracle JDK – what do these 2021 changes to Java licensing mean for you?
Just as customers are worrying about the end of public updates, Oracle’s September 2021 announcement heralds yet another change to the Java licensing model – the “Oracle No-Fee Terms and Conditions (NFTC)” license. Rejoice! Java is once again free for commercial use. However are things really that simple?
Before discussing the 2021 changes, let us first explore the various license models for Java SE over time:
Java SE under the Binary Code License (BCL) Agreement
The BCL is an agreement with both free and commercial elements.
The free elements
“General Purpose Desktop Computers and Servers” means computers, including desktop and laptop computers, or servers, used for general computing functions under end user control (such as but not specifically limited to email, general purpose Internet browsing, and office suite productivity tools) […]
[…] Oracle grants you a non-exclusive, non-transferable, limited license without license fees to reproduce and use internally the Software complete and unmodified for the sole purpose of running Programs.
Simply said, the use of Java to support an application for use in an IT environment is considered free. This will account for 95% of all Java use cases in a commercial environment.
The commercial elements
[…] The use of Software in systems and solutions that provide dedicated functionality (other than as mentioned above) or designed for use in embedded or function-specific software applications, for example but not limited to: Software embedded in or bundled with industrial control systems, wireless mobile telephones, wireless handheld devices, kiosks, TV/STB, Blu-ray Disc devices, telematics and network control switching equipment, printers and storage management systems, and other related systems are excluded from this definition and not licensed under this Agreement
[…] You may not use the Commercial Features for running Programs, Java applets or applications in your internal business operations or for any commercial or production purpose, or for any purpose other than as set forth in Sections B, C, D and E of these Supplemental Terms. If You want to use the Commercial Features for any purpose other than as permitted in this Agreement, You must obtain a separate license from Oracle.
So the use of Java SE that is not “General Purpose” and the use of Commercial Features are considered commercial.
Java SE following the 2019 changes
This is where things become more complicated. As of the quarterly Critical Patch Update in April 2019, Java SE updates are no longer public. In order to get access to Java SE updates for commercial use, you must either:
- Purchase Java SE Subscriptions; or
- Are a customer of a product with support entitlement for Java SE.
Note that Commercial Features and non-General Purpose use is still considered commercial.
However, it is not all bad news, personal (e.g. gaming) and development use (so long as the application has not reached production) still remain free under the newly introduced OTN for Java SE license.
Furthermore, as of version 11 onwards, Oracle have committed to providing the JDK to the OpenJDK community under GPLv2 with feature releases being provided every 6 months. This has caused many organizations to initiate migrations to OpenJDK as they did not require the Commercial Features nor the technical support provided by the Java SE subscriptions.
2021 – the introduction of the “Oracle No-Fee Terms and Conditions (NFTC)” license
Back to 2021, we now see another Java license change – the introduction of the “Oracle No-Fee Terms and Conditions (NFTC)” license for Java SE 17 and future versions. Why has Oracle decided to change the terms so soon? We can only speculate, perhaps there was mounting pressure from developers and organizations to reverse their 2019 changes or maybe the significant shift to OpenJDK has had unforeseen knock on impacts, not to mention the difficulties Oracle would have faced attempting to audit for Java SE.
Now, is the “Oracle No-Fee Terms and Conditions (NFTC)” license as good as it sounds? Almost. It is true that the license itself is free for all intents and purposes but note something that is hidden in the FAQ:
Oracle will use the NFTC for JDK 17 and later releases. LTS releases, such as JDK 17, will receive updates under this license for one year after the release of the subsequent LTS. After the free use license period, Oracle intends to use the OTN License, the same currently used for Java 8 and 11 LTS releases, for subsequent updates.
In summary, the “Oracle No-Fee Terms and Conditions (NFTC)” will only apply to Long-Term Support (LTS) for the first year, updates beyond this time frame will revert to the licensing model introduced following the 2019 changes; in short, public updates for commercial use will only be available for 1-year periods of any LTS release.
Lastly, the use of Commercial Features and redistribution within commercial applications/goods (main non-General Purpose use case) remains commercial.
What do Oracle’s 2021 Java licensing changes mean?
Elements of Java SE are and have always been commercial but most notably are the Commercial Features:
|Commercial Features||Details||Introduction into Java SE||Notes|
|GraalVM Enterprise Edition||High Performance Runtime/JVM||May 2019||Community edition available directly from GraalVM – differences are related to technical support availability and security.|
|Java Management Service||Advanced reporting and management infrastructure using agents to monitor/manage Java deployments on OCI, on-premise and third-party cloud services.||June 2021||Data is processed by Oracle systems but outputs are not visible to Oracle.|
|Java Flight Recorder (JFR)||Blackbox profiling and diagnostics collection tool.||Java Versions 7u40+||Released into OpenJDK as of JDK 11 onwards.|
|Java Mission Control (JMC)||Advanced toolset to analyse JFR data.||Java Versions 7u40+||Released into OpenJDK as of JDK 11 onwards.|
|Java Usage Tracker (JUT)||Detailed collects in-depth data around Java invocations.||Java Versions 7+|
|MSI Enterprise Installer||Advanced installer for Windows systems.||Java Versions 8u20+|
|Java Advanced Management Console (AMC)||Advanced toolset to analyse JUT data, manage Deployment Rule Sets and MSI packaging.||Java Versions 8u20+|
|JRockit Mission Control||Predecessor to JMC.||Legacy software|
|JRockit Flight Recorder||Predecessor to JFR.||Legacy software|
|JRockit Mission Control Console Observability||Predecessor to JMC.||Legacy software|
|JRockit Real Time, Deterministic GC||Deterministic garbage collection tool.||Legacy software||Legacy product separate to Java SE Suite.|
So at a high-level, whether you require a Java SE subscription or not can be boiled down to the following checklist:
- Do you require technical support from Oracle?
- Are you using any of the Commercial Features?
If the answer is yes to either of the above then you require Java SE subscriptions. If not, then see below for a simplified cheat sheet of which Java versions are considered commercial by Oracle.
|Java Version||Update Version||LTS||Status||Governing Terms|
|> 211||LTS||Commercial||Java SE + OTN|
|> 202||LTS||Commercial||Java SE + OTN|
|> 11.0.2||LTS||Commercial||Java SE + OTN|
|> 12.0.0||–||Commercial||Java SE + OTN|
|13||All||–||Commercial||Java SE + OTN|
|14||All||–||Commercial||Java SE + OTN|
|15||All||–||Commercial||Java SE + OTN|
|16||All||–||Commercial||Java SE + OTN|
|> 13/09/2022||LTS||Commercial||Java SE + OTN|
Of course, if your Java SE deployments are provided via a Third-Party Product or Oracle Product that include the license as part of your agreement then you are not required to purchase additional subscriptions with Oracle.
However, this should be reviewed directly with your vendors – just because Java is required with an application does not necessarily mean the vendor will supply the licenses for it. In fact, many publishers have migrated to bundling OpenJDK instead of Java SE into their products.
How do Oracle’s 2021 changes to Java licensing impact businesses?
Long story short, the impacts of the 2021 Java license changes should be relatively low. Broadly speaking the market can be divided into 3 sections:
1) Businesses who have invested in a strategy to migrate to OpenJDK
You should simply continue with their strategy: the cost has already been invested into the strategy and forecasting, you will not be impacted by any subsequent Java SE licensing changes and functionally the software is identical after JDK 11.
2) Businesses who have invested and are still investing in Java SE subscriptions
Assuming the appropriate due diligence to determine that you require Java SE Subscriptions, you are already purchasing the subscriptions so are covered for any commercial requirements and unaffected by these changes. Of course, periodic assessments are advised to minimize any wasted spend or risk within the estate.
3) Businesses who have yet to react to the 2019 changes
This is the critical portion of the market which need to assess their requirements.
- Do you have an IT security directive to update all your Java instances? How are you planning to do this? E.g. would you consider LTS versions for critical applications and OpenJDK for non-critical applications?
- Do you require certified technical support for regulatory reasons?
- Do you have a clear inventory of your Java deployments? Which versions are you using and do you have any plans for updates/migrations?
- Do you know which Java deployments are included as part of license agreements with Third Party Products?
Hopefully this article has helped clarify Java SE licensing and assisted with any decisions to be made.
Final food for thought
I just want to leave some additional questions that may help with your decisions.
- Do you actually require technical support for Java? A 2020 Survey by Snyk suggests that the majority of users do not require JDK support. Furthermore, Oracle are not the only support providers – other publishers also provide support for OpenJDK distributions (Azul, IBM, jClarity to name a few).
- How actively do you actually update Java? Some sources indicate that security updates and patches released by Oracle make it into the OpenJDK community very quick (in some cases on the same day). Do you actually need a subscription with Oracle for the “immediate patches”, especially if you don’t always apply them ‘same day’?
- Is it mandatory to patch Java on legacy, off-network “too-heavy-to-lift” machines? Java is undoubtedly one of the largest security risks in most modern infrastructures but can these legacy machines even be targeted for the remainder for their lifespan?
- If you are considering the Commercial Features, have you considered any alternatives? For example, the main difference between GraalVM Community and Enterprise editions are once again related to support requirements.
ITAA has helped many organizations to better understand their Java deployment, licensing and remediation strategies. If you have further questions about these 2021 Java licensing changes or require assistance with any other Oracle licensing matter, please do not hesitate to contact us.