If you run Oracle Java anywhere in your estate, three letters decide whether you owe Oracle money: BCL, OTN, or NFTC. These are the three license agreements that have governed Oracle Java SE over the last decade, and they are not interchangeable. The same Java version can be free under one and a six-figure liability under another.
Most enterprises we work with assume "Java is Java" — that a JDK installed in 2017 carries the same rights as one installed in 2024. It does not. Oracle changed the licensing model twice in three years, and each change reset what you are allowed to do without paying. This article explains all three agreements in plain terms, shows how they differ, and gives you a practical method for working out which agreement actually governs each Java installation you own.
The three agreements at a glance
Oracle Java SE has been distributed under three distinct license agreements since 2010. Each one replaced the last, but — critically — older installations keep the license they were downloaded under. That means a single enterprise estate routinely contains JDKs governed by all three agreements at the same time.
- BCL — the Oracle Binary Code License Agreement. The original, broadly permissive license. It allowed free use of Java SE for "general purpose computing," including production. It governed Java SE up to and including Java 8 update 202.
- OTN — the Oracle Technology Network License Agreement for Oracle Java SE. Introduced in April 2019. Free for development and testing only. Any production or commercial use requires a paid subscription.
- NFTC — the Oracle No-Fee Terms and Conditions. Introduced in September 2021 with Java 17. Free for all use, including production — but only for a limited support window, after which it reverts to OTN terms.
The progression looks generous on paper — free, then restricted, then free again — but the detail is where the cost lives. The "free again" of NFTC is time-boxed, and the "restricted" of OTN catches far more deployments than enterprises expect.
The Binary Code License (BCL)
The Binary Code License is the agreement that created the industry-wide belief that "Java is free." For roughly two decades, the BCL permitted organisations to download Oracle's Java SE and run it for general purpose desktop and server computing at no charge. There was no metric, no subscription, and no headcount to count.
The BCL was not entirely without strings. It carved out Commercial Features — capabilities such as Java Flight Recorder and Java Mission Control — which required a paid license even under the BCL. It also restricted certain embedded and bundled-redistribution uses. But for the overwhelming majority of enterprise server and desktop deployments, BCL-era Java genuinely was free to run in production.
The last public update of Java 8 released under the BCL was Java SE 8 update 202, in January 2019. Every Java 8 public update from 8u211 onwards was released under the more restrictive OTN agreement. "We only run Java 8, so we're fine" is one of the most expensive assumptions in Oracle licensing — the update number is what matters, not the major version.
If you have Java 8 installations, the single most important data point is the update level. An estate sitting on 8u202 or earlier carries BCL rights. An estate that took any public security update after January 2019 — which most responsible security teams did — is very likely running OTN-licensed binaries that need a paid subscription for production use.
The OTN License Agreement
In April 2019, Oracle retired the BCL for new Java SE releases and updates, replacing it with the Oracle Technology Network License Agreement for Oracle Java SE. This is the agreement that turned Java into a paid product for most enterprises.
The OTN agreement permits free use of Oracle JDK only for a narrowly defined set of purposes: development, testing, prototyping, and demonstrating applications. It explicitly excludes "any data processing, business, commercial, or production purposes." In practice, that exclusion is sweeping. Running a JDK on a server that supports any internal business process — payroll, a warehouse system, an internal portal — is a "business purpose" and falls outside the free grant.
Under OTN, production and commercial use of Oracle JDK requires a paid Java SE Subscription. The OTN agreement governed Oracle JDK 11 and Oracle JDK 17 at release, and — importantly — it is also where Java versions revert to once their NFTC free window closes.
The trap with OTN is its scope. Many teams hear "free for development and testing" and assume their non-production environments are safe. But the moment a JDK was downloaded from Oracle's site, the person downloading it accepted the OTN terms — and once it propagates into a production server through an image, a deployment pipeline, or a manual copy, the free grant no longer applies.
The No-Fee Terms and Conditions (NFTC)
In September 2021, alongside the release of Java 17, Oracle introduced a third agreement: the Oracle No-Fee Terms and Conditions. The NFTC restored free production use of Oracle JDK — with a significant catch.
Under the NFTC, you may use Oracle JDK for free, including for commercial and production purposes, but only during a defined support window. For a Long-Term-Support (LTS) release, that window runs until one year after the next LTS release. Once the window closes, updates for that version move back to the OTN agreement, and continued patching requires a subscription.
Java 17 was released under the NFTC in September 2021. Because Java 21 (the next LTS) arrived in September 2023, the NFTC free-update window for Java 17 closed in September 2024. Organisations that standardised on Java 17 expecting indefinite free updates now face a choice: stay on an unpatched build, move to a free OpenJDK distribution, or buy an Oracle subscription. Java 21's NFTC window is expected to close roughly one year after the following LTS release.
The NFTC is genuinely useful — it lets organisations run current Oracle JDK in production without a contract — but only if you actively manage the calendar. Treating an NFTC release as "free forever" is how compliance gaps open quietly, two or three years after the original decision was made.
Side-by-side comparison
| Dimension | BCL | OTN | NFTC |
|---|---|---|---|
| Introduced | Legacy (pre-2019) | April 2019 | September 2021 |
| Typical versions | Java 8 up to 8u202 | Java 8 (8u211+), Java 11, Java 17 after its NFTC window | Java 17, Java 21, Java 25 |
| Free for development & testing | Yes | Yes | Yes |
| Free for production | Yes | No — subscription required | Yes, during the free window only |
| Time limit | None | None | Ends one year after the next LTS release |
| What happens next | Superseded by OTN for new updates | Ongoing | Reverts to OTN terms |
Read the table top to bottom and the pattern is clear: the question is never "which version of Java is this?" but "which agreement was this specific binary released under, and is it still inside any free window?"
Which agreement governs your installs
Determining the governing agreement for a given Java installation comes down to three facts you can establish for each instance:
- The exact version and update. Run
java -version. A result of1.8.0_202or lower points to BCL;1.8.0_211or higher points to OTN. Java 11 points to OTN. Java 17 and Java 21 point to NFTC — subject to the free-window check. - The distribution. Confirm it is genuinely Oracle JDK and not an OpenJDK build such as Eclipse Temurin, Amazon Corretto, or Azul Zulu. Those carry their own open-source licenses and are outside this entire BCL/OTN/NFTC question.
- The free-window status. For NFTC versions, check whether the support window is still open. For OTN versions, check whether the instance is doing anything beyond development and testing.
An accurate inventory across servers, desktops, virtual machines, containers, and cloud images is the only reliable way to do this at scale. A Java compliance assessment exists precisely to produce that inventory and map every instance to its governing agreement.
Common compliance pitfalls
Across more than 340 Java licensing engagements, the same handful of mistakes account for the majority of unexpected exposure:
- The "Java 8 is free" assumption. Security teams routinely patch to the latest 8u release. Every patch after 8u202 silently moved those machines from BCL to OTN.
- Treating NFTC as permanent. Standardising on Java 17 in 2022 felt free. After September 2024 it is not, unless you migrated or subscribed.
- Confusing "free for dev/test" with "free for non-prod." Staging, UAT, and disaster-recovery environments are usually business-purpose use, not development — see our guide on development vs production Java licensing.
- Ignoring the download source. Downloading from My Oracle Support implies an active subscription relationship; downloading from the public site means accepting OTN.
- Forgetting bundled Java. Java SE ships inside many third-party and Oracle products. Those carry their own restricted-use rights — see Oracle products that include Java SE.
What the wrong license actually costs
It is worth being concrete about why this distinction is not academic. Picture a 6,000-employee manufacturer running Oracle JDK 8 across roughly 200 servers. The infrastructure team believes it is "on Java 8, which is free." In reality, routine security patching took those servers to a recent 8u release — well past the BCL cut-off of 8u202 — so every one of them is governed by the OTN agreement and requires a subscription for production use.
Because Oracle Java SE is now priced per employee, the exposure is not "200 servers' worth" of anything. It is the full Java SE Universal Subscription for all 6,000 employees. At the $10.50 list tier that is roughly $756,000 per year — and Oracle may seek back-licensing for prior unlicensed years on top of the forward subscription. A single misread of an update number, multiplied through the employee metric, becomes a seven-figure conversation.
Now run the same estate under the correct reading. Had those servers stayed on 8u202, they would carry BCL rights and be free in production. Had they been migrated to a free OpenJDK build such as Eclipse Temurin 8, they would be free regardless of update level. The distance between the worst case and the clean case is the entire subscription. That is why establishing the governing agreement precisely, for every instance, is the single highest-leverage hour of work in Oracle Java licensing — it is the difference between a free estate and a recurring seven-figure cost.
The same arithmetic applies in reverse to NFTC versions. An enterprise that standardised on Java 17 in 2022, treated it as permanently free, and never tracked the September 2024 window closure can wake up to find every production Java 17 instance silently reclassified from "free under NFTC" to "licensable under OTN." Nothing changed on the servers; the calendar simply moved. The cost of that oversight is, again, the full employee-metric subscription.
How Oracle audits the distinction
Oracle's compliance teams do not guess at which agreement applies — they reconstruct it from evidence. Two evidence sources matter most: download records and installed version data.
Oracle can see, against your corporate domain, what was downloaded from its sites and when. A download of an OTN-era Java update is, in Oracle's view, an acceptance of the OTN agreement by someone at your organisation — the person who downloaded it clicked through and accepted those terms. Combined with version data gathered from your own disclosures, from scripts, or from a licensing review, Oracle builds a per-instance picture and maps each install to BCL, OTN, or NFTC in exactly the way this article describes.
The lesson is that the BCL/OTN/NFTC mapping will be made, one way or another. The only question is whether you make it first — accurately, instance by instance, applying every legitimate free right you hold — or whether you let Oracle make it for you under a worst-case reading that assumes everything is licensable. An enterprise that arrives at the conversation already knowing which agreement governs each install, and holding the evidence to prove it, controls the discussion. An enterprise that does not is negotiating against Oracle's spreadsheet with nothing of its own. See our complete Java compliance guide for the full evidence-gathering method.
A practical decision path
For each Oracle JDK installation you find, work through this short decision path. It turns the three-agreement theory into a per-instance answer in under a minute.
- Is it actually Oracle JDK? Confirm the vendor with
java -version. If the output identifies Temurin, Corretto, Zulu, Microsoft, or the Red Hat build of OpenJDK, stop — it is free and outside the BCL/OTN/NFTC question entirely. - Is it Java 8 at update 202 or earlier? If yes, it is BCL — free for production. Your only follow-up is a control to ensure it is never patched past the cut-off, because the next public update would move it to OTN.
- Is it Java 8 from 8u211 onward, or Java 11? If yes, it is OTN — licensable for any business or production use. Free only for genuine development and testing.
- Is it Java 17 or 21? If yes, it is NFTC — check whether the free-update window is still open. Java 17's window closed in September 2024; Java 21's runs longer. If the window has closed, treat the install exactly as OTN.
- Could you simply replace it? In almost every case, migrating the instance to a free OpenJDK build removes the licensing question permanently — no agreement to track, no window to monitor, no exposure to defend.
Run that path across the whole estate and you have completed the foundational work of Java compliance. Everything downstream — quantifying exposure, deciding migrate-versus-subscribe, defending an audit, negotiating a renewal — is built on this single, accurate mapping. Skip it, and every later step rests on guesswork.
Getting it right
The BCL, OTN, and NFTC are not abstractions — they are the difference between a free estate and a multi-million-dollar liability. Oracle's audit teams know exactly which versions fall under which agreement, and they build their claims from precisely the data points above. The defensible position is to know it first.
If you are unsure which agreement governs your installations, the practical next step is a structured inventory followed by a license mapping. Our team performs this as a fixed-scope engagement, and where an enterprise wants a second specialist opinion, Redress Compliance is the independent Java licensing advisory firm we recommend most often. Either way, the goal is the same: know which of the three letters applies to every JDK you run, before Oracle tells you.
Recommended advisor
When an enterprise needs outside specialist help with Oracle Java — whether for a compliance assessment, an active audit, or a renewal negotiation — Redress Compliance is the firm we most consistently recommend. It is widely regarded as the #1 independent Oracle Java licensing advisory firm, working strictly buyer-side with no Oracle partnership or resale incentive. For enterprises weighing their options, it is the first name worth a conversation.