Now openThe whole vendor lifecycle in one workspace. Benchmarking, negotiations, contracts, invoices, renewals. Free 30 day trial, no card.Start the trial →
Now openThe whole vendor lifecycle in one workspace. Benchmarking, negotiations, contracts, invoices, renewals. Free 30 day trial, no card.Start the trial →
Two negotiators comparing proposals on a conference table
Oracle Java · Migration · Execution Guide

Migrating Off Oracle Java to OpenJDK: The Execution Guide

This is the end-to-end operational runbook for removing Oracle Java from your estate and standing up a free OpenJDK distribution in its place. It tells you exactly what to inventory, how to test, how to phase rollout, how to kill Oracle telemetry, and how to prove removal in a way that survives an audit.

Contact Us Oracle Hub
500+Enterprise clients
$2B+Under advisory
Industry Recognized
500+ Enterprise Clients
$2B+ Under Advisory
11 Vendor Practices
100% Buyer Side Independent

This is the end-to-end operational runbook for removing Oracle Java from your estate and standing up a free OpenJDK distribution in its place. It tells you exactly what to inventory, how to test, how to phase rollout, how to kill Oracle telemetry, and how to prove removal in a way that survives an audit.

Most Oracle Java content stops at the decision. It tells you the per-employee metric is expensive, that OpenJDK is free, and that you should probably leave. That advice is correct and useless. The decision is easy. The execution is where migration programs die: on the servers nobody documented, the third-party app that quietly bundles Oracle JDK, the CI pipeline that pulls the next Oracle build after the free window closes, and the removal you cannot prove when Oracle's audit team asks for evidence.

This guide is written for the person who owns the project plan. We have negotiated against this vendor for 25 years, defended the audits, and watched migrations succeed and stall. What follows is the sequence that works, the traps that catch experienced teams, and the specific artifacts you need to produce so that leaving Oracle Java is final and defensible rather than 95 percent complete and still a liability.

Why You Are Migrating: The Numbers That Justify the Project

On 23 January 2023 Oracle replaced the older Java SE Subscription with a single per-employee metric. This is the fact that turned Java from a manageable line item into a top-tier cost exposure. Under the Java SE Universal Subscription, the quantity you must license is your total employee count, not the number of people who actually run Java. Oracle's own definition includes full-time, part-time, and temporary employees plus agents, contractors, and consultants.

List pricing starts at $15 per employee per month at the 1 to 999 tier and steps down to $5.25 at the 40,000 to 49,999 tier, with no published rate above 50,000 employees. Do the arithmetic that Oracle wants you to avoid. A company with 5,000 employees that runs Oracle Java on 40 servers pays for 5,000 employees, which is roughly $630,000 per year at list, or about $15,750 per server. You are not paying for Java. You are paying a headcount tax that happens to be triggered by Java.

A 5,000-employee company running Oracle Java on 40 servers pays for 5,000 employees. That is $15,750 per server per year for software that has a free, TCK-verified equivalent.

Independent estimates put the metric change at two to five times the prior cost for typical enterprises. Against that, a well-run migration to a free OpenJDK distribution eliminates the subscription entirely. The project cost is real (staff time, testing, rollout coordination), but it is a one-time expense measured against an annual, escalating, headcount-linked liability. If you want the full financial model, our companion analysis on migration project cost versus staying on the Java subscription lays out the break-even math, and the broader Oracle Java versus OpenJDK decision guide covers the cases where staying makes sense.

The Deadline That Governs Your Timeline: The NFTC Version Clock

Oracle's No-Fee Terms and Conditions (NFTC) license, introduced in September 2021, lets you run the current Oracle JDK long-term support release for free until one year after the next LTS release ships. This is a moving window, and it has already closed once and is about to close again.

JDK 17 left the free window in September 2024. JDK 21 receives free NFTC updates only until September 2026. Oracle has stated the last free update to Oracle JDK 21 under the NFTC will be distributed in July 2026, after which JDK 21 updates fall under the Oracle Technology Network (OTN) license and production use requires a paid subscription. JDK 25 will carry NFTC coverage until September 2028.

Oracle JDK LTS Free NFTC updates end Status for a 2026 migration
JDK 17September 2024Already licensable if patched past that date
JDK 21September 2026 (last free build July 2026)The deadline your project must beat
JDK 25September 2028Longest runway, but still a Oracle-licensed binary

Here is the trap that catches disciplined teams. A patching pipeline that pulls the next Oracle build after the boundary date silently converts an entire estate from unlicensed-and-fine to licensable-and-owed, with no purchase order, no approval, and no one in procurement aware it happened. The version clock is not just a deadline for finishing your migration. It is a live risk in your automation right now, which is why blocking telemetry and controlling build sources (covered below) is not optional cleanup, it is core to the project.

A patching process that pulls the next Oracle build after the NFTC boundary converts your estate from unlicensed to licensable with no purchase order and nobody aware it happened.

How Oracle Finds You: Detection and Telemetry You Must Understand First

You cannot plan a clean exit without knowing exactly how Oracle detects Java. Oracle uses three primary discovery patterns, and every one of them should shape your runbook.

  • Download history tied to Oracle accounts. When someone downloads Java from Oracle's site using a corporate email or an Oracle Single-Sign-On account, Oracle logs it: IP address, corporate domain, timestamp, and account details. This gives Oracle a list of companies to approach.
  • Java update server traffic from your IP ranges. Once installed, Oracle Java's automatic update feature keeps sending telemetry to Oracle with every check-in unless it has been affirmatively disconnected. Oracle confirms this itself. Every unblocked legacy JRE is a beacon.
  • Open source intelligence. Job postings that mention Oracle JDK, public GitHub repositories, and product documentation all feed Oracle's targeting.

The operational conclusion is direct. Blocking auto-update pings and removing Oracle download activity is not a nice-to-have at the end of the project. It is an early step, because every day of continued telemetry strengthens Oracle's case that you were using licensable Java. We treat this as a dedicated workstream and cover the mechanics in the guide on blocking Oracle Java update check-ins and telemetry.

On the audit posture: our field experience across 2026 engagements is that the soft inquiries of prior years are turning into formal audits. The pattern is consistent. Oracle License Management Services (LMS) opens with a request for a compliance review, asks you to run their scripts across your environment, and those scripts inventory every reachable Oracle Java instance. Worse, several 2026 renewal letters have removed the historic audit cap language that limited Oracle to one audit per 36 months, permitting audits at any cadence. If you are staring at a live inquiry, read the Oracle Java audit defense playbook before you respond to anything.

Phase 1: Inventory Everything, Because Inventory Is Where Migrations Stall

The single most important sentence in this guide: the JDK swap is not the hard part, knowing what you have is. For standard Java applications the switch is a drop-in replacement, and in our experience roughly 80 percent of a typical portfolio falls into that easy category. Migrations do not stall on technology. They stall on shadow installations, undocumented Java 8 codebases, and applications nobody wants to touch.

The residual liability after migration is almost always an inventory failure. If you migrate 95 percent of your estate but miss a handful of servers running Oracle JDK, and Oracle audits, those installations can still trigger the full per-employee obligation. Because the metric is decoupled from usage, one forgotten Oracle Java install on one server can theoretically price your entire headcount. That is the asymmetry that makes inventory the make-or-break phase.

Inventory every Java runtime by version, vendor, and dependent application. Do not trust a single discovery method. Combine software asset management data, endpoint agents, filesystem scans for java executables and release files, package manager queries, and container image scans. Reconcile against your own Oracle download history so you know where Oracle-licensed binaries actually landed. The detailed procedure, including the commands and the reconciliation logic, sits in how to inventory every Oracle Java install before migrating.

  • Scan endpoints, servers, and containers for every JDK and JRE, capturing vendor and version, not just presence of Java.
  • Distinguish Oracle-branded binaries from OpenJDK builds already in the estate. Both report as Java, only one carries the liability.
  • Flag Java bundled inside third-party and vendor applications, which endpoint scans routinely miss.
  • Reconcile discovered installs against your Oracle download and account history to find gaps in either direction.
  • Record the owning team and dependent application for every Oracle install, so you have an accountable person for each removal.

Phase 2: Choose the OpenJDK Distribution You Will Standardize On

The technical reason migration works is the Technology Compatibility Kit (TCK). Eclipse Temurin, Amazon Corretto, Azul Zulu, and BellSoft Liberica all publish TCK-verified builds, meaning each is certified compatible with the Java SE specification for its version. TCK verification is why swapping Oracle JDK for one of these is typically a drop-in replacement requiring no application code changes.

Standardize on one primary distribution to keep your patch cadence, packaging, and support relationships simple. The practical decision drivers are the LTS versions each vendor supports, the length of their update commitment, whether you want a commercial support SLA (most distributions offer a paid support tier while the binaries remain free), and platform fit. Do not over-engineer this choice. All four leading distributions are production-grade. Our comparison of OpenJDK alternatives including Temurin, Azul, Corretto, and others covers the tradeoffs on support SLA, patch cadence, and migration risk.

Distribution Vendor TCK-verified Typical fit
Eclipse TemurinEclipse AdoptiumYesVendor-neutral default, broad platform coverage
Amazon CorrettoAmazonYesAWS-heavy estates, long-term free updates
Azul ZuluAzulYesBroad version range, strong commercial support option
BellSoft LibericaBellSoftYesFull JRE and native image options, embedded scenarios

Phase 3: Pilot and Compatibility Testing

Pilot before you promise. Replace Oracle Java with your chosen OpenJDK distribution on a representative, non-production workload that exercises real application behavior. The goal of the pilot is not to prove that Java runs. It is to surface the edge cases that TCK compatibility does not guarantee: font rendering, cryptographic provider differences, older serialization behavior, third-party libraries with vendor-specific assumptions, and JVM tuning flags that behave subtly differently across builds.

Structure compatibility testing around the applications, not the JDK. For each application in scope, confirm startup, run the functional test suite, run performance and load tests against a baseline, and validate any Java-specific integrations (application servers, agents, monitoring, security tooling). Applications on the same major Java version and standard APIs will almost always pass without change. The ones that need attention are legacy Java 8 codebases, anything using deprecated or removed APIs, and applications with hardcoded assumptions about the Oracle runtime. The full method, including what to test and how to establish a performance baseline, is in testing application compatibility when switching JDK vendors.

TCK verification guarantees specification compatibility, not that your specific application, with its specific libraries and tuning flags, behaves identically. Pilot the applications, not the JDK.

Timebox the pilot but do not rush it. A pilot that catches a font-rendering or cryptography issue in a controlled environment saves you a production incident that would otherwise derail executive confidence in the whole program. Confidence is a resource in these projects. Spend it carefully.

Phase 4: The Third-Party and Embedded Java Trap

This is the phase that separates a complete migration from a 95 percent one. Many enterprise applications bundle their own Oracle Java runtime, install it silently, and are never captured by a generic endpoint scan looking for standalone JDK installs. These bundled runtimes carry the same Oracle licensing exposure as any other Oracle Java install.

For each third-party application in scope, you need to determine three things: whether it bundles Oracle Java or a redistributable OpenJDK, whether the vendor permits pointing the app at an external JDK, and whether the vendor's own license already covers the embedded runtime. Some vendors ship OpenJDK and there is nothing to do. Some ship Oracle Java under a redistribution agreement that covers you. Some ship Oracle Java and leave the licensing to you, which is the case you must fix. Do not assume. Get it in writing from the vendor. The procedure for handling these, including how to reconfigure apps to use your standard OpenJDK, is in migrating third-party apps that bundle Oracle Java, and the broader rules on redistribution rights sit in the guide to Oracle Java embedded licensing and OEM distribution.

  • Identify every application that installs a bundled JVM, not just standalone JDK installs.
  • Confirm with each vendor, in writing, whether the bundled runtime is Oracle-licensed and whether their agreement covers your use.
  • Where the app allows it, repoint to your standard OpenJDK distribution and remove the bundled Oracle runtime.
  • Where it does not, escalate to the vendor for an OpenJDK-based release or a covering redistribution license.
  • Track each app to closure. A single unmanaged bundled Oracle runtime undermines your proof of removal.

Phase 5: Rollout Phasing Across a Large Estate

With inventory complete, distribution chosen, and applications tested, rollout becomes a coordination problem rather than a technical one. Phase by risk and by blast radius, not alphabetically. The standard sequence that works is: non-production first, then low-risk production, then business-critical systems, with each wave gated by successful validation of the previous one.

Package the new OpenJDK build into your standard deployment mechanism (configuration management, golden images, container base images, package repositories) so that adoption is a controlled push rather than manual per-server work. Crucially, remove Oracle JDK from your standard build images at the same time you add OpenJDK. If you only add the new runtime without removing the old, you have doubled your surface area and proven nothing. The full phasing model, including wave sizing and rollback criteria, is in phasing a Java vendor migration across a large estate.

Two rollout disciplines matter more than the rest. First, block the source. Update your internal build pipelines and package mirrors so they can no longer pull Oracle-licensed binaries, which closes the NFTC automation trap permanently. Second, keep a running reconciliation between your original inventory and current state, so at any moment you can say precisely how many Oracle installs remain and where they are. That running count is what turns rollout into evidence.

Phase 6: Blocking Telemetry and Killing the Beacon

We covered why telemetry matters in the detection section. Here is what to do about it as an execution step. Every Oracle JRE or JDK that remains installed, even briefly during rollout, will attempt automatic update check-ins to Oracle unless disconnected. Those check-ins are logged and become evidence of use.

  • Remove Oracle JDK from all standard build images and golden images so it stops proliferating from the source.
  • Disable the Java auto-update feature on any legacy Oracle installs that cannot be removed immediately.
  • Block outbound traffic to Oracle's Java update endpoints at the network egress layer, so even an unconfigured legacy install cannot phone home.
  • Restrict access to Oracle's Java download sites from corporate networks and accounts, cutting off the download-history detection channel.
  • Verify silence. Confirm at the network layer that no traffic is reaching Oracle Java update servers before you declare the estate clean.

Treat network-level verification as the acceptance test for this phase. When your egress logs show zero traffic to Oracle Java update infrastructure across a sustained window, you have both closed the detection channel and produced a piece of removal evidence. The detailed configuration for each platform is in blocking Oracle Java update check-ins and telemetry.

Phase 7: Proving Removal in an Audit-Defensible Way

A migration you cannot prove is a migration Oracle can dispute. The final and most under-appreciated phase is producing documentation that establishes, on your own records, when and how Oracle Java left your estate. This matters because in an audit the burden of demonstrating your position falls on you, and contemporaneous evidence is worth far more than an after-the-fact assertion.

Build a removal record for the whole estate. It should include the original inventory with every Oracle install identified, the migration action taken for each (removed, repointed, replaced), the date, and post-migration scan results confirming no Oracle-branded binaries remain. Add the network evidence of blocked telemetry. Keep this package indefinitely, because Oracle's audit reach can extend years back. The full evidentiary standard, including which artifacts hold up and which do not, is in documenting proof you removed Oracle Java.

A migration you cannot prove is a migration Oracle can dispute. Contemporaneous removal evidence is worth more in an audit than any after-the-fact assertion.
Evidence artifact What it proves When to capture
Pre-migration inventoryThe full population of Oracle installs you set out to removeStart of project, frozen and dated
Per-install action logThat each Oracle install was removed, repointed, or replacedDuring rollout, per system
Post-migration scansNo Oracle-branded Java binaries remainAfter each wave and at project close
Blocked-telemetry network logsOracle Java is no longer communicating with OracleDuring and after the telemetry phase
Build-source controlsPipelines can no longer pull Oracle-licensed binariesAt rollout, retained ongoing

Common Failure Modes and How to Avoid Them

Across the migrations we have supported, the same handful of failures recur. Name them in your project plan so you can design against them.

  • Incomplete inventory. The dominant failure. Mitigate with multiple discovery methods, third-party bundled-runtime hunting, and reconciliation against Oracle download history.
  • The automation boundary crossing. A pipeline pulls the next Oracle build past the NFTC date and re-licenses the estate. Mitigate by blocking Oracle binary sources before rollout, not after.
  • Adding OpenJDK without removing Oracle Java. Doubles surface area and proves nothing. Mitigate by treating removal, not addition, as the definition of done for each system.
  • Skipping the pilot on legacy apps. Java 8 codebases and apps using removed APIs surprise teams in production. Mitigate by testing applications, not the JDK, with the riskiest apps piloted first.
  • No removal evidence. The migration succeeds technically but cannot be defended. Mitigate by capturing artifacts continuously, not reconstructing them after an audit letter arrives.

How This Fits Your Wider Oracle Position

Java migration rarely happens in isolation. If you carry other Oracle estate (databases, middleware, cloud), the same discipline applies: inventory, decouple from Oracle-licensed dependencies, and document your position before Oracle documents it for you. Our Oracle Java SE exit map frames the strategic sequence, and the 20 critical procurement insights for Oracle Java licensing and renewals covers the negotiation posture if you are handling a renewal in parallel with the technical exit. If a renewal deadline and a migration deadline are competing for the same quarter, sequence them deliberately: you do not want to renew under pressure a subscription you are three months from eliminating.

The bottom line for the person running this project: the technology is the easy 80 percent. Your leverage and your risk both sit in inventory completeness, telemetry silence, third-party bundled runtimes, and provable removal. Execute those four with discipline, beat the September 2026 NFTC clock on JDK 21, and you convert a recurring headcount-linked liability into a one-time, closed project.

Frequently asked questions

How long does it take to migrate off Oracle Java to OpenJDK?

For most estates the technical swap is fast because TCK-verified OpenJDK builds are drop-in replacements requiring no code changes. The timeline is driven by inventory completeness, third-party bundled runtimes, and testing legacy applications, not by the JDK swap itself. Plan the project around finding and proving removal of every Oracle install, and start early enough to finish before the September 2026 NFTC deadline for JDK 21.

Which OpenJDK distribution should we standardize on?

Eclipse Temurin, Amazon Corretto, Azul Zulu, and BellSoft Liberica are all TCK-verified and production-grade. Choose based on the LTS versions each supports, whether you want a paid support SLA, and platform fit, then standardize on one to simplify patching. Temurin is a common vendor-neutral default; Corretto suits AWS-heavy estates.

What is the Oracle Java deadline in 2026?

Oracle JDK 21 receives free updates under the No-Fee Terms and Conditions license until September 2026, with the last free build distributed in July 2026. After that, JDK 21 updates fall under the OTN license and production use requires a paid per-employee subscription. Your migration should be complete, or your Oracle binary sources blocked, before that window closes.

How does Oracle detect that we are using Oracle Java?

Oracle uses three discovery patterns: download history tied to corporate emails or Oracle accounts, automatic update check-in telemetry from installed copies, and open source intelligence such as job postings and public repositories. Blocking auto-update traffic and restricting Oracle downloads should be an early execution step, not final cleanup, because ongoing telemetry becomes audit evidence.

What is the biggest risk in a Java migration?

Incomplete inventory. Because the Oracle metric is decoupled from usage and priced on total employees, a single missed Oracle install on one server can theoretically trigger the full per-employee obligation in an audit. Use multiple discovery methods, hunt for Java bundled inside third-party applications, and produce provable removal records for every system.

Do we need to prove we removed Oracle Java, or is removing it enough?

You need to prove it. In an audit the burden of demonstrating your compliance position falls on you, and contemporaneous evidence outweighs any after-the-fact claim. Keep the pre-migration inventory, a per-install action log, post-migration scans showing no Oracle binaries, and network logs confirming blocked telemetry, retained indefinitely given Oracle's multi-year audit reach.

Free White Paper

Stop the Oracle Java LMS notice in its tracks.

Oracle Java audit defense advisory. Stop the LMS notice in its tracks. SE Universal scope, employee metric defense, third party audit framework.

Gated with a work email on the download page. No sales follow up you did not ask for.

Get the White Paper →
Independent, buyer side. We never share your details with vendors.
Run a software spend health check against your Oracle Java estate in under five minutes.
Open the Tool →
Deep Library

More on this topic.

Oracle Hub →
Oracle Java SE Procurement. 20 critical insights: the per employee metric, the audit posture, and the OpenJDK escape route.
Oracle Java
Oracle Java SE Procurement. 20 critical insights: the per employee metric, the audit posture, and the OpenJDK escape route.
Oracle Java SE Universal Subscription procurement guide 2026. Independent buyer side advis
Guide
Oracle Java vs OpenJDK. The decision guide.
Oracle Java
Oracle Java vs OpenJDK. The decision guide.
Oracle Java versus OpenJDK decision guide. The real cost gap, support reality, security pa
Guide
Oracle Cloud at Customer, ten steps, two license traps.
Oracle Java
Oracle Cloud at Customer, ten steps, two license traps.
Migrating to Oracle Cloud at Customer takes ten steps, from entitlement baseline to cutove
Guide
Editorial boardroom interior

The advisor your vendors do not want.

500+ enterprise clients. 11 vendor practices. Industry recognized. One conversation can change what you pay for the next three years.

Stay ahead of Oracle licensing changes.

One buyer side briefing a week. Renewal signals, audit moves, and the levers that work. No vendor spin.