Life will never be the same
The world of Java development was shaken in 2019 when Oracle changed the licensing policy for JDK 8. As free public updates for Java 8 (still the most popular version amongst developers) were no longer provided, companies had to pay for commercial support or look for a substitution for Oracle Java.
In 2021, Oracle introduced a new LTS release schedule (every two years instead of three) and changed the licensing policy again. Starting with version 17, Oracle JDK is distributed under the “Oracle No-Fee Terms and Conditions” (NFTC) license. Although this change in theory made Java free for commercial use again, in reality the situation was not so simple.
But the Oracle Sales Team is up and doing. In January 2023, Oracle turned the tide on Java pricing again and introduced a new pricing model for Java SE Subscriptions. The new Employee for Java SE Universal Subscription substitutes the old Java Named User Plus License and Processor and will have a huge impact on businesses using Oracle Java. According to the House of Brick calculations1, a medium-sized company may experience a spike in annual Java cost by 1,400%!
This article will decipher the terms of all new licensing models present since 2019 and figure out how they affected and will affect the companies and the support prices in the future. We won’t go into legal technicalities, but will try to clarify the challenges that the developers will face based on the information provided by Oracle2 and present some ways to deal with them.
So let’s see what Oracle has in stock and how much using Java actually costs!
Table of Contents
Java licensing conditions
To understand the intricacies of Java licensing changes, first, let’s explore the difference between personal use and commercial use. Personal use means running Oracle products on the desktop or laptop that belongs to an individual and is solely under their control. Therefore, a corporate PC cannot be considered suitable for this condition as it belongs to a company. In addition, it is permitted to run personal applications and perform personal activities such as gaming or keeping track of your finances. You also may not distribute or give Oracle software provided to you for personal use to third parties separately or as part of your products.
Since 2019, free updates for Java 8 have been available to non-commercial users for personal use, development, testing, prototyping, and some other usage scenarios specified in the Oracle Technology Network (OTN) License for Java SE3. The same applies to Oracle JDK 11, except that Oracle OpenJDK 11 is available under the General Public License, version 2, with the Classpath Exception (GPLv2+CPE) just like any OpenJDK distribution. Note that Oracle provides two builds: Oracle JDK and Oracle OpenJDK. The latter receives updates for six months upon the release of the following version. After that, you have to purchase the license to continue receiving patches and support from the vendor.
In 2021, Oracle changed the licensing terms for Java 17 and introduced the NFTC license based on the feedback from developers who wanted to have “trusted Oracle JDK under an unambiguously free terms license.”4 Now, Oracle JDK versions and builds are available under different licenses, the summary of which you can find in the table below.
|JDK Version (LTS)||Dates||License|
|Oracle JDK 7||7u80, before April 2015||Oracle BCL for Java SE|
|July 2015 and after||My Oracle Support for Oracle customers|
|Oracle JDK 8||8u202, before January 2019||Oracle BCL for Java SE|
|After April 2019 (the latest build is 8u321)||
My Oracle Support for Oracle customers
|Oracle JDK 11||Oracle OpenJDK before January 2019||GPLv2+CPE for all users|
|Oracle JDK (the latest build is 11.0.14)||My Oracle Support for Oracle customers |
and Oracle OTN for Java SE for Personal,
Development, and other Users
|Oracle JDK 17+||Oracle OpenJDK up to January 2022||GPLv2+CPE for all users|
Oracle JDK up to September 2024
|Oracle NFTC License for all users|
So what exactly are the licensing changes?
- The No-Fee Terms and Conditions license is applicable only if you haven’t received the JDK 17 as a standalone package or as part of another product under the Oracle Master Agreement. It means that if you have already purchased, for example, a Java SE Subscription or other Oracle software, the Oracle Java 17 deployment will not be governed by the NFTC.
- The NFTC makes JDK 17 free for commercial and production use under the following restrictions:
- Development, testing, prototyping, and demonstrating your applications. Your applications are the software developed by you or your company;
- Running the software for your personal use or internal business operations. We have already explained what personal use implies. Internal business operations mean that you can deploy and use Oracle JDK within your company;
- Redistribution of software under the NFTC terms without charging licensees any fees.
- The usage of commercial features (e.g., Java Advanced Management Console or GraalVM Enterprise Edition) and redistribution within commercial programs is not governed by the NTFC and remains commercial.
- Users will receive free security updates for three years (one year after the release of a subsequent LTS version) in case of LTS releases. Updates for feature releases will be available for free for one year. After that, it is necessary to either migrate to a newer version or purchase a subscription (the OTN License) to continue Oracle JDK commercial use.
The extent of impact
So how will the new license impact your company and your expenses? It depends on the Java version you are using. For the sake of brevity, let us consider the LTS versions only.
Up to Java 17
If your applications are running on Oracle JDK 8 or 11 and you are not planning to update soon, you can continue using these versions and receive free (for personal use) or paid-for updates.
Please remember that if you are using Java 8 but still haven’t switched to a paid license to receive security updates, your applications are at a very high risk of attacks as you have already missed a lot of vulnerability patches. Consider migrating your applications to OpenJDK. This way, you will be able to enjoy free updates for an extended period. BellSoft, for example, will update Java 8 up to 2031!
For Java 6 or 7 users, nothing changes as well. The only thing they have to consider is the vulnerability of their software. BellSoft provides regular updates for JDK 1.6 & 1.7, so you don’t have to worry about possible exploits.
Java 17 and beyond
You could be starting a new project based on Java, so, naturally, you want to have the most modern JDK version. In this case, you can install Oracle JDK 17, receive free patches for three years, and then migrate to the next LTS version. However, the upgrading process doesn’t take one day. Every Java release contains new features, whereas some features get deprecated or removed. The next version will already be available by the time the process is completed. This way, your developers will spend most of their time tweaking the code for compatibility sake rather than work on your own software.
In another scenario, you receive free updates until Java 21 comes out and then buy the subscription to get updates for JDK 17.
In other words, you will likely have to pay for a Java license, or keep upgrading your application to the newest Java according to Oracle’s schedule, and not yours.
The third alternative is to use an OpenJDK distribution. There’s almost no technical difference between Oracle JDK and OpenJDK, security updates are released quarterly in line with the Oracle CPU schedule, and you can receive commercial support if you need to.
If you need more details on how using an OpenJDK build is different from using Oracle’s OpenJDK, take a look at our comprehensive comparison of OpenJDK distributions vs Oracle Java.
Costs of licensing in 2023
Let’s talk money! How much are you going to pay for a Java license? With OpenJDK providers it depends on the number of machines with Java installed, but with Oracle Java, not anymore.
According to the new Oracle Java SE Universal Subscription Global Price List, the number of required licenses is calculated based on the number of employees, and not just the employees actually utilizing the Java programs, but all company employees, including "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."
What is more, the Java SE Universal Subscription Programs can be installed on up to 50,000 processors, not counting desktops, regardless of the number of employees. If the quantity of processors exceeds 50,000, additional licenses must be purchased.
Note that this model is applicable only for full use and not eligible for Application Specific Full Use (ASFU) licensing, Embedded Software Licensing (ESL), Independent Software Vendor (ISV) licensing, or redistribution.
For example, you have 50 servers and 250 employees including full-time, part-time, temporary employees, agents, consultants, and contractors. The price per employee within the range of 1-999 is $15/month, so the total price is $45,000/year. With 500 servers and 2,500 employees, the price per employee is $12/month, so the total annual price is $360,000.
Now, let's take the same 50 servers and 250 employees. In case you choose Liberica JDK, the price is calculated based on the number of servers. The total price is $15,000 per year. With 500 servers, the total annual price is $70,000. This estimation is based on the prices effective in November 2022 and presented on corresponding Oracle Java SE Universal Subscription Global Price List and Liberica JDK support price pages.
In other words, the price and model of support differs significantly between Oracle Java and OpenJDK distributions. The more employees you have, the more you pay for Oracle licenses.
Number of servers
Number of employees
$45,000 a year
$15,000 a year
$360,000 a year
$70,000 a year
Use our calculator to estimate the savings for your project.
Do you need Oracle licensing?
A crucial choice to make is whether you want to pay for a license from Oracle, from another vendor, or not pay at all. All of these options are viable and depend on your needs.
Here are some points that will help you decide on your future strategy:
One of the main reasons people pay for a Java license is good support. As a rule of thumb, larger corporations are not the best at feedback. Issues such as long response times, unqualified help, and more lawyers than developers on the support line are common with support provided by industry giants. When working with a trusted OpenJDK vendor, you get easy access to the developers that make the software, so can promptly help resolve your issue.
Most of the OpenJDK vendors release security patches and updated JDK versions almost at the same time as Oracle does with Oracle Java. This means you don’t compromise your security by using OpenJDK build, even with a free version.
Another advantage of using OpenJDK is you often get extended support for outdated versions of JDK.
Usually different vendors provide different features of their version of OpenJDK. In case of BellSoft, we give our subscribers access to:
- Java inventory tool for Windows, Liberica Administration Center;
- Enhanced builds of Liberica JDK for legacy Java 6 & 7;
- The widest selection of supported system configurations;
- Support for Native Image Kit, a GraalVM-based multilingual tool that transforms your applications into performant native images.
Other vendors, including Oracle, provide other features that may benefit you more or less. This topic is too vast to cover in this article. If you are interested in discovering how Liberica JDK is different from its competitors, please download the white paper on the subject.
Oracle licensing on VMware
If you deploy Oracle JDK on VMware virtual servers or plan to do it, you may encounter legal complications during the Oracle audit. Oracle licensing in virtual environment is based on Oracle Partitioning Policy. This document lays down two types of virtualization technologies, soft and hard partitioning.
Hard partitioning segments a server into distinct systems that act as physically independent servers with their own CPUs. Hard partitioning allows you to limit the number of software licenses required for a server or a cluster of servers.
VMware is deemed by Oracle as a soft partitioning technology. Soft partitioning segments the OS using the resource managers. The OS creates areas with CPU resources allocated to programs within the same OS. Soft partitioning is not permitted as a means to limit the number of software licenses. In other words, you have to license the full server capacity.
So if you deploy Oracle Java on VMware platform and utilize ESXi (virtualization hypervisor) version 6.0 and up, you have to license all physical hosts in all your VMware environments.
Note that the above mentioned Partition Policy is provided "for education purposes only and may not be incorporated into any contract and does not constitute a contract or a commitment to any specific terms." It means that you have to either negotiate a clear agreement with Oracle before signing the contract or prepare a management strategy in the event of an audit.
Sounds too complicated? For us, too. The problem is that there are no clear answers when it comes to using Oracle software with VMware. We will have our ear to the ground and update this article as soon as the situation clarifies.
To sum it up, Java licensing changes may sound exciting at first, but they go hand in hand with certain restrictions and limitations, and in the end, you will have to pay for a subscription to continue receiving updates. At the same time, the overhaul of pricing strategy in 2023 left all companies utilizing Oracle Java in confusion. What will happen next? With Oracle, nobody knows for sure, as they seem to change the license conditions every 2 years since 2019. That’s why the abrupt changes in Oracle’s pricing policy led to the surge of requests for BellSoft’s support.
And the last thought to go. Some companies choose OpenJDK for the opportunity to use JDK builds at no cost. You are not obliged to pay for open source software as it is the philosophy of the OpenJDK project to provide all the programmers with affordable, secure, and efficient tools. But paying for commercial support doesn’t only mean keeping your runtime safe at all times. It is also a way to support the community and the Java ecosystem so that the engineers can continue dedicating their time to Java platform development.
If you are interested in switching to supported and secure OpenJDK Java distribution, feel free to contact us and ask any questions!