On 23 January 2023, Oracle changed its Java subscription licensing model from the
Java SE Subscription introduced in August 2018 to a Java SE Universal
Subscription. It then modified some of the wording again on 1 March 2023.
For any organisation that does not currently pay Oracle for Java — whether
through maintenance on perpetual licences or an annual subscription — the change
affects how much you pay if chargeable licences turn out to be required.
For organisations that already pay, it means Oracle licensing has to be managed
considerably more tightly. You need to maintain and be able to demonstrate
compliance across your Java installations, or risk being moved onto the Universal
Subscription model whether you want it or not.
What actually changed
Oracle’s terms for scoping which hosts need licences did not change. What
changed is how Oracle charges for them.
Under the old Java SE Subscription, you identified the hosts running chargeable
versions of Java, worked out how many Processor or Named User Plus licences those
hosts required, and paid for that usage annually. The quantity was a function of
the deployment.
Under the Java SE Universal Subscription, if you have a single host requiring a
paid licence, the subscription is priced on the total number of internal
employees plus external agents — contractors, outsourcers and consultants
supporting internal business operations. The starting quantity is effectively
your publicly declared headcount. For most organisations that is a substantially
larger number than the old metric produced.
Oracle’s definition of an employee for this purpose:
Employee for Java SE Universal Subscription: is defined as (i) all of Your
full-time, part-time, temporary employees, and (ii) 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.
The quantity of the licenses required is determined by the number of Employees
and not just the actual number of employees that use the Programs. For these
Java SE Universal Subscription licenses, the licensed quantity purchased must,
at a minimum, be equal to the number of Employees as of the effective date of
Your order.
Under this Employee metric for Java SE Universal Subscription Program(s), You
may only install and/or run the Java SE Universal Subscription Program(s) on up
to 50,000 Processors. If Your use exceeds 50,000 Processors, exclusive of
Processors installed and/or running on desktop and laptop computers, You must
obtain an additional license from Oracle.
Read that second paragraph twice. The quantity is determined by headcount, not by
who uses Java. Every employee is counted because every employee could use it.
The additional change of 1 March 2023
On 1 March 2023 Oracle amended the Universal Subscription again to clarify
wording. The clarification has consequences of its own.
January 2023 wording: Java SE Universal Subscription is available only for
full use. It is not eligible for Application Specific Full Use (ASFU) licensing,
Embedded Software Licensing (ESL), Independent Software Vendor (ISV) licensing,
or redistribution.
March 2023 wording: Java SE Universal Subscription is available only for
internal business operations under an applicable enterprise license. It is
not eligible under any redistribution agreement, including the Application
Specific Full Use (ASFU) license, Embedded Software Licensing (ESL), or Binary
License and Redistribution Agreement.
The 50,000-processor ceiling still applies. If Java SE is installed or running on
more than 50,000 processors — excluding those on desktop and laptop computers —
an additional licence from Oracle is required. That condition sits in the notes
to the Java SE Universal Subscription Global Price List.
Anyone who had already concluded the January rules would hurt them financially
needs to factor the March amendment in as well.
Oracle Java licensing explained
In short: the Java SE Universal Subscription is an Unlimited Licence Agreement in
everything but name. Once you are on it, there is very little optimisation left
to do — the quantity is your headcount, and headcount does not respond to
reclaiming installs.
The following will have implications wherever Oracle Java is used in any
non-development environment, which includes all end-user compute devices:
- ANY use of “commercial features”
- ANY use of Java v6 update 51 or higher — effectively any update since June 2013
- ANY use of Java v7 update 85 or higher — effectively any update since July 2015
- ANY use of Java v8 update 211 or higher — effectively any update since April 2019
- ANY use of Java v11, v12, v13, v14, v15 or v16
Already paying maintenance on perpetual licences?
Oracle has indicated that customers can continue to use an existing perpetual
licence model provided maintenance is being paid, but the volumes must be
correct. You have to be able to validate what is deployed against the maintained
perpetual entitlement you hold. Failing to demonstrate compliance can mean Oracle
declines to accept your renewal order.
Already paying under the existing subscription model?
Oracle has indicated that the Processor and NUP model can continue, again
provided the volumes are correct. Any unvalidated change to licence quantities
can mean Oracle declines the renewal order, or elects to audit.
If you are found non-compliant, the likely outcome is licensing all employees
under the Java SE Universal Subscription Global Price List.
No active Oracle Java SE subscription?
Oracle will only sell subscriptions under the Java SE Universal Subscription
Global Price List, with the employee definition set out above: all your
full-time, part-time and temporary employees, plus those of your agents,
contractors, outsourcers and consultants supporting your internal business
operations.
How this changes an Oracle licensing strategy
If you are running the latest updates to v8, or any version from v11 to v16, the
strategic move is to get to v17 or higher. That brings the deployment under the
No-Fee Terms and Conditions licence, which permits internal business operations —
provided you do not use commercial features and no host needs licensing under the
Oracle Binary Licence and Redistribution Agreement.
Where a host has to stay on a chargeable version, remember the arithmetic: under
the Universal Subscription, a single chargeable host costs the same as licensing
everything. There is no such thing as a small exception.
Where commercial features are in use, or a host requires licensing under the
Binary Licence and Redistribution Agreement, treat it as an exception and track
it — including evidence that the appropriate licence was purchased — through your
internal change control process.
Organisations on Java 7 or 8 should review every associated host for reasons the
version could not move to v17 or later. Where v7 or v8 genuinely has to stay,
OpenJDK or another non-Oracle distribution is worth assessing. Check contractual
obligations to your own customers and to regulators before moving off a supported
Oracle product — those commitments sometimes constrain the strategy.
Where the upgrade cycle stands now
The original version of this post described the upgrade treadmill in the future
tense. It has since run twice, exactly as expected, which is useful confirmation
that Oracle intends to keep running it.
JDK 21 shipped in September 2023 as the LTS release. That opened a twelve-month
window in which v17, v18, v19 and v20 had to move to v21 to stay inside the NFTC
free-use grant; that window closed in September 2024.
JDK 25 shipped in September 2025 as the next LTS. The same rule applies: v21,
v22, v23 and v24 remain free under the NFTC until September 2026. After that,
hosts still on those versions fall outside the no-fee grant and require licensing
under the Java SE Universal Subscription.
This is the pattern, and it is not going to stop. LTS releases arrive every two
years, and each previous LTS keeps its free-use grant for twelve months after the
next one ships. Non-LTS releases receive bug and security patches for roughly six
months, so unless there is a specific business requirement for one, standardising
on LTS releases reduces the overhead considerably.
The practical conclusion is that Java upgrades are no longer an engineering
preference. They are a scheduled licensing obligation with a fixed date attached,
and they need an owner and a budget line like any other.
What this requires you to be able to prove
Every decision above depends on the same underlying data: for each host, which
Java version and update level is installed, what the host does, and whether Java
is actually being used on it. Most organisations cannot produce that list, which
is precisely why the conversation with Oracle starts from Oracle’s numbers.
CerteroX SAM is built around that problem. Installed software is resolved against
the Software Recognition Database — 3.5 million or more normalised publisher,
product and version titles — so a Java installation is identified by version and
update level rather than logged as an unrecognised binary. The Software
Recognition Service attaches release, end-of-support and extended-support dates,
which is how you find the hosts whose free-use window has closed before Oracle
does.
Coverage matters as much as recognition. The native inventory agent runs on
Windows, macOS, Linux, IBM AIX, HP-UX and Oracle Solaris against one schema, with
agentless and command-line inventory for locked-down systems and standalone
inventory for air-gapped ones. Java is on all of those, and the versions nobody
has looked at in five years are usually not on Windows.
Usage separates the hosts that run Java from the hosts that merely have it.
AppsMonitor meters at file level with first-used and last-used tracking and a
% Used figure over a rolling 90-day window — the evidence you need to remove an
installation rather than argue about it.
All of that feeds an effective licence position with purchased, used, available,
required, variance and exposure, computed continuously rather than reconstructed
when a letter arrives. Governance Policies then hold the line, flagging a
chargeable Java version reappearing on a host you have already cleared.
Certero is a verified third-party tool vendor with Oracle License Management
Services. In Certero’s published wording: being a verified third-party toolset
means that Oracle’s audit team can accept data from Certero during an official
audit, as an alternative to installing Oracle License Management measurement
tools. It is a conditional rather than a guarantee, but it changes where the
negotiation starts.
Where the licensing expertise is the constraint rather than the tooling, Certero
runs a SAM managed service for Oracle Java. In-house Oracle licensing consultants
analyse the environment, identify where the risk sits, and work through the
mitigation options — upgrade path, OpenJDK migration, existing entitlement you
may already hold — so the decision about what to buy is made from evidence rather
than from Oracle’s opening position.