Oracle Java Technical Scenarios

Oracle Java Binary Code License (BCL) Explained

Oracle Java Binary Code License (BCL) Explained

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/serversEmbedding Java in devices or hardware products
Running Java on general-purpose systemsBundling the Oracle JRE with software for external users
Unlimited internal copies/installationsDistributing Oracle Java to third parties
Development, testing, and demo useUsing 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 TypeBCL Free Use?Notes
Desktop or ServerYesGeneral-purpose computer (okay under BCL)
ATM or POS TerminalNoSpecialized device – needs a license
IoT Device or GadgetNoNot a general-purpose system
Router or ApplianceNoEmbedded 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.

Oracle Java Edge Cases Explained: WebLogic, Cloud & Embedded Licensing

Do you want to know more about our Java Advisory Services?

Author

  • Fredrik Filipsson

    Fredrik Filipsson brings two decades of Oracle license management experience, including a nine-year tenure at Oracle and 11 years in Oracle license consulting. His expertise extends across leading IT corporations like IBM, enriching his profile with a broad spectrum of software and cloud projects. Filipsson's proficiency encompasses IBM, SAP, Microsoft, and Salesforce platforms, alongside significant involvement in Microsoft Copilot and AI initiatives, improving organizational efficiency.

    View all posts