Oracle's January 2023 shift to per-employee Java SE Universal Subscription pricing turned a niche compliance question into a multi-million-dollar line item for many enterprises. The good news: there are robust, no-cost OpenJDK alternatives that serve the same workloads. The harder news: migrating an unmanaged Java estate cleanly takes work. This is the playbook.
In January 2023, Oracle introduced the Java SE Universal Subscription. The previous Java SE Subscription, priced per Named User Plus or per processor, was retired for new customers. The replacement is priced per employee — every employee in the customer's organisation, regardless of whether they touch Java — at tiered rates ranging from approximately $15 per employee per month for small organisations down to $5.25 per employee per month for the largest tiers. The economic effect for most enterprises was a 2–5x increase in headline Java licence cost.
That change was not, in Oracle's framing, a price increase. It was a metric change. Oracle's commercial position is that the new metric is "simpler" — one number, the employee count, applied uniformly. The customer's position, almost universally, is that the new metric decouples licence cost from Java usage entirely. Customers using Java on a handful of servers pay the same per-employee rate as customers running Java across the entire estate.
Oracle's definition of "employee" in the Universal Subscription is broad. It includes full-time and part-time employees, contractors who work for the customer, temporary employees, and agents who use the customer's systems. The headcount used for pricing is the larger of the count at contract signing and at any subsequent renewal. There is no mechanism to scale down between renewals if headcount falls.
The negotiation lever is the migration plan, not the per-employee rate.
From 1995 to 2019, Oracle's commercial JDK was free for production use under the Binary Code License. From 2019 to 2021, production use of Oracle JDK 8u202 and later required a commercial subscription, while OpenJDK builds remained free. From 2021 to 2023, Oracle introduced the No-Fee Terms and Conditions (NFTC) covering current-version Oracle JDKs for production use during a defined window — but that window expires when the next LTS release ships, after which continued use of the older LTS requires the Universal Subscription. The history matters because Oracle's Java compliance team looks backward — at downloads, runtime usage, support inquiries — to construct a non-compliance position.
Oracle's Java compliance outreach typically arrives as a sales conversation, not a formal audit notice. The opening framing is usually "we've noticed your team downloading Oracle JDK from oracle.com" or "we'd like to discuss your Java SE compliance posture." The escalation path, if the customer does not engage, mirrors a database audit — a formal letter, a request for runtime evidence, a draft findings report. Customers who treat the initial conversation as informational frequently surrender evidence that becomes the basis for the subsequent commercial position.
Oracle's visibility into a customer's Java estate is limited unless the customer hands it over. Download logs from oracle.com identify downloads tied to corporate email domains. Support inquiries identify hosts where Oracle JDK is in use. CVE notifications and patch downloads identify version usage. None of those data points, in isolation, establishes commercial usage — but combined, they form the framing for the audit conversation.
The full migration framework — OpenJDK selection, runtime detection, and audit defence.
OpenJDK is the open-source reference implementation of the Java SE specification. Oracle is the largest contributor to OpenJDK, and Oracle's commercial JDK is fundamentally a build of OpenJDK with a small number of additional components. The OpenJDK ecosystem now produces multiple free, TCK-certified, production-ready distributions:
For the overwhelming majority of workloads, these distributions are functionally equivalent to Oracle JDK. The migration is a configuration exercise — change the JDK on the host, restart the application, validate the runtime. The complexity is not in the technology; it is in discovering every JDK install across the estate and managing the cutover at scale.
There is a narrow set of workloads where commercial Java support is legitimately needed: certified workloads with regulatory dependence on a specific JDK build (e.g., medical-device firmware, certain financial-services certifications), workloads with deep Java agent dependence where vendor-specific support is required, and workloads where the customer's internal Java engineering depth is insufficient to manage runtime issues independently. For these workloads, commercial support — from Oracle, Azul, or Red Hat — has a real cost-benefit case. For everything else, free OpenJDK distributions with internal or community support are sufficient.
A well-run Oracle-to-OpenJDK migration for a mid-size enterprise takes 4–9 months. The savings compound — every year the customer remains off the Universal Subscription is a year of full per-employee fee avoided.
Discovery is the workstream that benefits most from independent oversight.
Java licensing has matured as a specialist advisory area in the three years since the Universal Subscription shift. Among the firms most consistently named by enterprise buyers we work with:
Java looks deceptively simple — a single product, a single per-employee number — but the migration and audit dynamics reward depth. Independent advice on the discovery and migration plan typically pays for itself in the first year of avoided Universal Subscription cost.
Our Java practice runs OpenJDK migrations and Oracle Java audit defence across enterprise estates.
Weekly compliance intelligence for IT leaders.