Oracle Java Binary Code License (BCL) Explained
Before Oracle switched to paid Java subscriptions, Java was distributed under the Binary Code License (BCL).
Many older installations still run under BCL terms. Many teams misunderstood what it really allowed.
Pro Tip: The BCL made Java look free — but only within limits.
Read our guide to more scenarios where Java may or may not require a license, Oracle Java Technical Scenarios & Edge Cases.
What the BCL Actually Is
The BCL is the legal agreement that accompanied Oracle’s Java (up to Java 8). It lets you use Java without paying fees – but only for certain purposes.
In other words, BCL wasn’t carte blanche. It set specific conditions.
You could use Oracle Java freely for general internal purposes. But there were strict rules about redistributing Java, embedding it in products, and what devices it could run on.
In plain English, BCL lets you use Java SE in your business for free, as long as you stick to “normal” uses.
It applied to Java SE 8 and earlier versions. Those versions are still governed by BCL today if you’re still running them.
The key idea: Java under BCL was free for general-purpose computing. That means using it on typical PCs, servers, and business applications didn’t require payment.
However, if you took Java outside that realm, the “free” part ended, and a paid license kicked in.
Core Permissions Under the BCL
Under the BCL, some uses of Java were permitted free of charge. Others required a paid license.
Here’s a breakdown of what you could and couldn’t do:
You could:
✅ Download Oracle’s Java and use it internally within your organization.
✅ Run Java applications on general-purpose machines (standard desktops, laptops, or servers).
✅ Install the Java runtime across your company’s systems for internal use.
You could not:
❌ Embed Java in dedicated devices or include it inside software products you distribute.
❌ Redistribute Oracle’s Java to customers or the public without Oracle’s explicit permission.
❌ Use Oracle Java on specialized hardware (like ATMs, kiosks, or other non-PC devices) without an OEM license.
Pro Tip: BCL rights end where redistribution begins.
For quick reference, here’s a summary of what the BCL allowed vs forbade:
| Allowed (Free under BCL) | Not Allowed (Requires License) | 
|---|---|
| Internal business use on company PCs/servers | Embedding Java in devices or hardware products | 
| Running Java on general-purpose systems | Bundling the Oracle JRE with software for external users | 
| Unlimited internal copies/installations | Distributing Oracle Java to third parties | 
| Development, testing, and demo use | Using Java on specialized or non-PC equipment | 
The General-Purpose Device Clause
One critical BCL restriction was where Java ran. Oracle allowed free use of Java only on general-purpose computing devices—basically, standard computers.
A typical Windows PC, Mac, or server was fair game under the free terms. But if the machine was a special-purpose device, the BCL’s free use did not apply.
Think of devices like an ATM, a retail POS terminal, a network router, or an IoT gadget.
These are not general-purpose computers – you wouldn’t use an ATM to write a document or browse the web.
Oracle products include a Java SE license; Oracle Products with Java SE License Entitlements.
Using Java on such specialized devices without a separate agreement broke the BCL. Oracle required a paid embedded Java license (an OEM agreement) for those cases.
To illustrate, here’s how device type affected your free Java rights under BCL:
| Device Type | BCL Free Use? | Notes | 
|---|---|---|
| Desktop or Server | Yes | General-purpose computer (okay under BCL) | 
| ATM or POS Terminal | No | Specialized device – needs a license | 
| IoT Device or Gadget | No | Not a general-purpose system | 
| Router or Appliance | No | Embedded use not covered by free license | 
Pro Tip: If your product can’t open Word or Chrome, it’s not general-purpose.
In short, the BCL drew a clear line. Java was “free” on PCs and servers, but not free on embedded systems or dedicated appliances.
Many companies missed this nuance and assumed Java was free everywhere. That mistake could lead to compliance issues.
Redistribution and Commercial Use Limits
The BCL also limited how you could share or package Java. It was fine to use Java internally, but you couldn’t redistribute Oracle Java outside your organization.
For example, imagine your company built a software application. You might want to bundle Oracle’s Java Runtime (JRE) with your installer to make setup easier for users.
Under the BCL, you couldn’t do that freely.
Distributing Oracle Java outside your organization – even at no cost – required Oracle’s permission. Typically, that meant obtaining an OEM license or a similar agreement.
Rule of thumb: Internal use = OK; external distribution = NOT OK.
If you gave Oracle Java to customers or the public – whether by itself or bundled with your software – you crossed into a licensed use case.
Even if your software were free, including Oracle’s JRE would violate the BCL without a special arrangement.
Oracle essentially wanted to control any commercial or widespread use of Java beyond its own walls.
So while running Java inside your business was free, you couldn’t treat Oracle Java as a “free-for-all” for your customers.
Many open-source projects and software vendors worked around this. They told users to download Java themselves or they bundled open-source Java alternatives instead.
Transition Away from the BCL
Oracle changed Java’s licensing model in 2019. It moved away from the BCL for new Java releases.
Starting with Java 11, Oracle introduced a new Oracle Technology Network (OTN) license and later a paid subscription model.
In short, after 2019, Oracle’s Java wasn’t free for commercial use like it was under BCL.
However, this change didn’t erase the past.
If your organization still uses Java 8 or earlier, those installations are still under the BCL terms you originally agreed to.
The new licenses apply to newer versions. They don’t lift the old BCL obligations on older deployments.
In fact, Oracle’s compliance efforts often focus on legacy Java deployments. That’s where companies may have unknowingly stepped out of bounds.
Pro Tip: You can’t time-travel out of the BCL — legacy use still counts.
Even though Oracle now offers subscriptions for new Java versions, you can’t ignore the BCL for older ones.
Any Java SE 8 (or earlier) in your enterprise should be reviewed against BCL rules.
Make sure you weren’t unknowingly doing something that required a paid license all along.
How to Check if You’re Still Under BCL Terms
Not sure if BCL terms still apply to your Java usage? Use this quick checklist to find out:
✅ Identify older Java installations: List all Java versions in use that are older than Java 11 (e.g., Java 8 or 7). These are subject to the BCL.
✅ Verify Oracle vs Open: Determine if those installations are Oracle’s official JDK/JRE or an open-source build. Only Oracle’s Java falls under the BCL restrictions.
✅ Spot embedded uses: Check if any of these Java instances are embedded in devices or included in software you distribute outside your company.
✅ Review external access: See if any external customers or partners access systems running those older Oracle Java versions.
✅ Document everything: Keep records of all Oracle Java (Java 8/7) installations and how they’re used. This helps in case of audits.
✅ Plan next steps: Decide for each legacy Java instance whether to replace it with a non-Oracle Java (like OpenJDK) or to obtain an Oracle Java license/subscription.
Common BCL Misunderstandings
There are a few myths that often trip up teams when it comes to “free” Java under the BCL. Let’s clear those up:
- “We’re using Java 8 for free, so we’re compliant.” → Not necessarily.
 - “It’s fine if we distribute Oracle Java with our app.” → Only with Oracle’s explicit permission.
 - “We can use Oracle Java in our IoT devices or custom hardware.” → Not under the BCL.
 
These myths give a false sense of security and can lead to compliance trouble. In reality, Oracle’s auditors look for exactly these scenarios in older environments.
That’s why audit notices often zero in on “legacy installations” – Oracle knows many companies ran Java “for free” without realizing the fine print.
Modern Alternatives to BCL-Licensed Java
The good news: today, you have options to avoid BCL headaches entirely.
If BCL’s restrictions (and the fear of an Oracle audit) worry you, consider switching to an openly licensed Java.
OpenJDK is the open-source version of Java, with no Oracle licensing traps. It’s functionally equivalent to Oracle’s Java but available under an open-source GPL license.
Several vendors also provide their own free OpenJDK builds. For example, Amazon Corretto, Azul Zulu, Red Hat OpenJDK, and Eclipse Temurin are popular options.
You can use these in production, embed them in devices, or ship them with your software – all without worrying about Oracle’s BCL terms.
By moving your older applications from Oracle’s Java to OpenJDK-based alternatives, you remove all those “field of use” restrictions.
Open-source Java has no “general-purpose device” clause. You can run it on any device or include it with your product at no cost.
Dropping Oracle’s Java 8 also eliminates the compliance risk it introduced. It even simplifies your Java management.
You gain the freedom to use Java wherever you need, with no special license agreements required.
Read what can trigger licensing, Java SE Commercial Features – Usage Rights.
Final Take
The Oracle Java Binary Code License was how Java stayed “free” for years—but it came with strings attached.
It allowed unlimited internal use on general-purpose computers. That covered most standard business needs.
Yet the BCL always drew a line. If you stepped into distribution, embedding, or other non-standard uses, you entered paid license territory.
For organizations still running Java SE 8 or earlier, the BCL is still alive and binding. “Free Java” under that old license only goes so far.
It’s wise to double-check those legacy Java installations now, before Oracle does it for you. Make sure your usage truly fell under the free allowances.
If not, either get proper licenses or move to a truly free alternative.
Pro Tip: The BCL isn’t gone — it’s just waiting in your legacy stack.
Read about our Java Advisory Services.