From January 2019, public updates for Java SE 8 stopped being available for
business, commercial or production use without an appropriate commercial
licence. Before anyone rushes out to buy licences, it is worth understanding
what is actually being licensed — because a large part of what most
organisations run may not need one.
If you are a personal user, you can still use Java for ordinary tasks on
personal desktops, notebooks, smartphones and tablets. That allowance does not
extend to commercial or production environments.
What is and is not covered
Java SE is made up of many features and components. Most are covered by Oracle’s
Binary Code License Agreement and were available free of charge. The
complication is that Oracle developed a set of commercial features available
with Java SE, and using any of those in a business, commercial or production
environment requires a licence.
The MSI Enterprise JRE Installer is the standard example. It was the normal way
to distribute the Java Runtime to desktops and laptops, and using it for
business operations required a licence. Using the same commercial features for
design, development or testing did not.
The other complication runs in your favour. You may already be covered. Your
existing Oracle entitlements cover a suite of features and components, some of
which include Java. You may also be covered for Oracle Java inside your
entitlements for IBM or SAP products. Neither of those is obvious from an
installation record, and both are worth establishing before a purchase order is
raised.
What changed for support
The change also altered support.
Java 8 no longer receives public updates for business, commercial or production
use. Oracle provides security patches and updates for it only under a support
contract. Personal-use updates continued on a separate track and Oracle has
extended that window more than once since — but personal-use terms are not
available to a commercial deployment, so they are not a strategy.
From Java 9 onwards, Oracle moved to a six-month feature release cadence,
with only selected releases designated for Long Term Support. Releases not
designated LTS receive updates for six months and then stop. At the time this
was written, LTS was expected every three years — Java 11 in September 2018, and
Java 17 after it.
The practical implication is that you need to review the support available for
each Java version you actually run, and decide whether it meets your
requirements. That decision is impossible without knowing which versions you
run and where.
What businesses should do
Oracle’s own recommendation was to review the Java SE roadmap to determine
ongoing support requirements and assess the impact on business and commercial
models, and to prepare migration plans to move from older versions to a later
release where LTS is needed.
The six-month schedule is designed to make each upgrade smaller and therefore
less onerous than the large, infrequent jumps that preceded it.
There was also good news at the time, and it has held: Oracle committed to
releasing Oracle JDK and OpenJDK together, with essentially the same content
from Java 11 onwards. OpenJDK is genuinely capable of meeting the same
requirements as Oracle JDK for most workloads. Security patches are released for
both, though for OpenJDK they are not described as “public updates”.
That leaves a set of options, each with a consequence:
- Stay on Java SE 8 without updates. No security patches. This is an
exposure, not a saving.
- Migrate to a later version. Feasible, but on a non-LTS release it commits
you to upgrading every six months.
- Migrate to OpenJDK. Support comes from the community after the initial
patch window, or you upgrade to stay current.
- Licence Java through another product, such as IBM or SAP, where your
entitlement already covers it.
- Pay Oracle for support and updates.
- Pay a third party for support and updates.
- Use a personal version of Java SE 8. It gives you updates and leaves you
non-compliant in an audit. Do not.
- Use free builds from the Adoptium project — the community builds
originally published as AdoptOpenJDK, which moved to the Eclipse Foundation
and are now Eclipse Temurin. Support is community-based rather than
contractual.
What happened after this was written
Three things, and each one changed the shape of the problem.
September 2021 — the No-Fee Terms and Conditions licence. Oracle released
JDK 17 under a new NFTC licence permitting free use, including in production and
commercial settings, for a defined window: until one year after the following
LTS release. This was a genuine reversal of direction, and it is why some
organisations run current Oracle JDK builds today at no cost. The window is
finite, and it closes on a schedule rather than on notice.
September 2023 — the LTS cadence shortened. Oracle moved from three years
between LTS releases to two. JDK 21 shipped in September 2023 and JDK 25 in
September 2025. The NFTC free-use period for JDK 21 through 24 accordingly
closes in September 2026. If you adopted JDK 21 under NFTC and have not planned
the move to 25, that is the date to have in the diary.
January 2023 — the metric changed completely. Oracle withdrew the per-user
and per-processor Java SE subscriptions and replaced them with the Java SE
Universal Subscription, sold on an employee metric. “Employee” is defined
broadly: full-time, part-time, temporary and seasonal staff, plus contractors,
consultants and outsourcers supporting internal operations — regardless of
whether any of them ever touch Java.
That last change inverts the exercise. Under the old metric, counting your
deployments told you how much to buy. Under the employee metric, counting your
deployments tells you something more valuable: whether you need a commercial
subscription at all. Every host you can move to a non-Oracle build, retire, or
show is covered by an existing entitlement is a host that no longer pulls you
into the commercial metric.
As for the audit question in the title — Oracle’s interest in customers’ Java
deployments has been sustained rather than sporadic since, and the pattern is
consistent: before Oracle will process an order for additional subscriptions, it
wants a list of where Java is deployed. If you are being asked for that list,
produce it from evidence rather than from memory.
Recommendations
The advice from 2018 stands, and the employee metric has made it more urgent
rather than less. Discover and inventory every application that runs Java SE.
Identify and document:
- The quantity and version of every Java-related product installed or running
- Who has access to it and who is actually using it
- Which deployments are JDK and which are JRE, which commercial features are
enabled, and the update level installed
Then assess:
- Which business-critical systems genuinely require continued Java patching and
support
- Where an alternative distribution such as OpenJDK or Eclipse Temurin would
meet the requirement
Once that is gathered, you can make a licensing decision on evidence, and defend
it later.
Building the record
Java is unusually hard to count, which is why so few organisations can answer
this question quickly.
It has been around long enough to be everywhere. Developers use it, so it turns
up inside in-house and third-party applications. It arrives bundled with
licensable products from IBM and SAP, and sometimes with other Oracle products.
It sits in build images, so it is redeployed with every machine refresh. And
“Java” means Oracle JDK, OpenJDK, the IBM and SAP redistributions, Amazon
Corretto, Eclipse Temurin and more — all identical to the person who installed
them, and only some of them creating an Oracle liability.
CerteroX ITAM discovers and inventories the hosts; CerteroX SAM recognises what
is on them and computes the position.
- Recognition, not folder names. Software recognition resolves against the
Software Recognition Database — over 3.5 million normalised publisher, product
and version titles — so each installation is identified as the specific
distribution and version it is. Publisher normalisation is what separates a
bundled IBM or SAP redistribution from an Oracle one, and that separation is
the whole argument.
- Version and support status. The Software Recognition Service carries
release date, end-of-support and extended-support dates, so unsupported and
end-of-life Java surfaces as a security finding rather than a licensing
footnote. In practice this is usually the first thing an exercise like this
turns up.
- Actual usage. AppsMonitor meters file-based software use with first-used
and last-used tracking, and a % Used metric over a rolling 90-day window. A
runtime nobody has invoked in three months is a removal candidate, not a
purchase.
- Coverage where Java actually hides. The native agent covers six operating
system families — Windows, macOS, Linux, IBM AIX, HP-UX and Oracle Solaris —
with the same inventory cycle and licence engine on all six. If your discovery
only reaches Windows, your Java answer is wrong before you start.
- A position, not a list. Purchased, used, available, required, variance and
exposure, computed continuously rather than reconstructed when asked.
There is one further advantage worth knowing about. 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. That is a
conditional rather than a guarantee — but it is a materially better starting
position than a spreadsheet assembled by hand.
Get the inventory right and the rest follows: you can see your licensing
position, work out how to improve it, and ring-fence the legacy and non-Oracle
installations rather than paying for them. The organisations that come out of a
Java review well are the ones that knew where their Java was before anyone
asked.