Reserved area

Java licenses, when is a subscription required?

How to set up a decision workflow to decide whether or not to fire Java.

In light of the new pricing policy for the Java SE subscription model (we discussed it here), which takes into account the number of employees of client companies instead of the actual usage of Java, companies should consider optimizations and alternative scenarios to reduce the impact on the budget.

But to determine which applications to require (or not require) subscription for, the first step is to be aware of the uses of Java in their environments and the value it brings the organization. For making decisions on renewals and expansion agreements, it is essential for you to have knowledge of the version in use, how it is used, the signed agreement, and the commercial features you want to employ.

Currently, the change in metrics from NPU/processors to employees does not affect active subscriptions ("Customers of the legacy Java SE Subscription products continue to receive all the original benefits and may renew under their existing terms and metrics") but it is unclear whether this extends to the increase in license quantities or how long renewal under existing terms will be guaranteed.

It is a good practice to know what you have and how you are using it, so you can take preventive cost-cutting measures and regularize your licensing position in case the vendor comes knocking at the door (according to Gartner, this could happen very soon).

In this article we try to clarify the cases for which to license Oracle Java, defining a decision – making workflow to define whether or not the use we make of Java requires a subscription.

When to license Oracle Java?

First question: where did we download Java from?

Java was released in open source and still is.

As a matter of fact, the open source development of Java is led by Oracle within the OpenJDK community: the OpenJDK application can be downloaded for free from and is released without support under the GNU General Public License. This is still the totally open source version, in continuity with the initial intention of SUN Microsystems, the company that developed the Java programming language.

If we have downloaded Java SE from OpenJDK we have a GNU license that does not require a subscription. And the same goes for other Java providers that maintain a "totally free" version.

Second question: where does installation fit in?

The next step is to identify the purpose of the installation: if they are App/Middleware/OEM installations, no license is required. In fact, Java installations that are a component of Oracle Middleware or an application may be exempted from the calculations because they are covered by the main license.

But be careful, you always have to check: for example in OEM you have to check that all OEM-managed targets are subscribed. We also know that Java can be required for other installations: according to the BCL agreement, if the "General Purpose" is met, the use of Java is free (but we will see this later).

Third question: which agreement did we downloaded?

The version of Java downloaded from the Oracle site is bound to a contract: it can be BCL (Binary Code License Agreement) or OTN (Oracle Technology License Agreement). Both require licensing, but provide free use cases (e.g., General Purpose for BCL).

With BCL agreement, the application has a mix of free and commercial features for which attention is required. This is because following Oracle's acquisition of SUN in 2010, the vendor added proprietary features to the Java suite and included the concept of "restricted use".

A third agreement is NFTC Oracle No-Fee Terms and Conditions, but it does not require a license. To determine a membership in BCL or OTN was a time marker related to the April 2019 "critical patch update": from that update, Oracle decided that free public updates for Java 8 were no longer planned.

Let's summarize the version-related agreements:


The BCL covers versions (including updates) released before April 16, 2019, from version 5 to 10 (excluding version 8 following update 211, then we will see in detail).

The Oracle BCL provides for a "restricted use" concept and thus requires payment of a subscription to use Oracle Java, except in cases where:

  • there are "General Purpose" conditions.

The BCL defines "Software," "General Purpose Desktop Computers and Servers," "Programs," and the relationships between these terms. Within the BCL, we read that Java is free in cases where "general purpose computing" conditions are met (the cases of "general purpose use" such as viewing content via browser, using email or productivity applications such as may be a suite for delivering streaming webinars)

"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 e-mail, general purpose internet browsing and office suite productivity tools) 

  • re-entries into the development environment for internal (and not third-party) applications.

"Oracle grants you a non-exclusive, non-transferable, limited license without fees to reproduce and use internally the complete and unmodified software for the purpose of designing, developing, and testing your programs."

At the same time in the BCL Oracle also defines that:

"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, [...]. 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."

In other words, you must pay for a commercial license to use any Commercial Features. It sounds simple, but it is surprisingly easy to inadvertently activate and use the commercial features of Java. Downloading Java software from the Oracle Web site, which features a mix of free and commercial functions, requires attention as to what additional functions are required to be licensed.

In fact,you must be aware of what commercial features are automatically included in Java SE by reading the Oracle website and additional terms. These include:

  • Java Flight Recorder
  • Java Mission Control
  • Java Advanced Management Console
  • MSI Enterprise JRE Installer
  • JRockit Flight Recorder
  • JRockit Mission Control Console observability
  • JRockit Mission Control Memory Leak Detector observability
  • JRE Usage Tracking
  • JRockit Real Time, Deterministic GC

So, if the downloaded version is among those under BCL, you have to check if the usage falls under "General Purpose", for which no license is required.

But the latter lapses if: 1) The April 2019 update is applied and if 2) commercial features are used outside of Test and Development for internal applications.


Beginning in April 2019, Oracle changed the licensing policy for JDK8: since there were no longer free public updates for Java 8 (which was the most popular version among developers), companies had to start paying for commercial support or look for a replacement for Oracle Java.

As of this "critical patch update," JDK licenses downloaded from the Oracle site fall under the OTN contract, i.e., from the update following 8u202. Licenses under BCL, once the security update is done, also fall under OTN.

This agreement is substantially different from the BCL: the concept of "General Purpose" is dropped but free uses are provided such as:

  • personal use (e.g., for gaming)
  • development use (provided the application is not in production and therefore developed for internal use only)
  • Oracle-approved product uses (we can find them here)
  • use on the Oracle Cloud Infrastructure (OCI)


With the release of Java17 in 2021, Oracle changed the licensing terms and introduced the NFTC Oracle No-Fee Terms and Conditions license, based on feedback from developers who wanted to have Java free again for commercial use.

If you are using a version later than 17, there is no subscription required, so switching to this version is one of the solutions that can be envisioned to reduce the budget impact associated with the new metric.

Of course, we can work toward this or provide other countermeasures, such as removing Java or switching to open source versions or even providing for cases where use is free, but remember that at any time an employee or contractor could install Java without the appropriate license, and then you would no longer be compliant.

The problem is not just compliance: the costs of migration, upgrade or support (e.g., OpenJDK does not provide this) could outweigh maintaining the status quo.

Nel webinar “Conosci l’impatto della nuova metrica Oracle Java?” che si è tenuto il 6 aprile, abbiamo visto come ottimizzare la spesa legata alle licenze con le strategie più adatte per la vostra azienda, in modo da garantire il valore di Java e la sua conformità in ogni momento.

                                                                 OTTIENI IL VIDEO!

02-s pattern02

Would you like to have control over your Java subscriptions?