Java Compliance

Development vs Production:
what Java licensing really means.

Oracle's OTN agreement is free for development and testing but not for production. The trouble is that 'production' is far broader than most teams assume — and the line is where compliance gaps open.

10 min read2,200 wordsPublished 19 May 2024Updated 1 Oct 2025
Home / Blog / Java Compliance

"It's free for development and testing." Almost every team running Oracle Java has heard that sentence, and almost every team has interpreted it too generously. The development-versus-production line is the single most misunderstood boundary in Oracle Java licensing — and the place where well-intentioned organisations accumulate exposure without realising it.

This article explains exactly what the boundary is: what Oracle's OTN agreement permits for free, what "production" really covers, where the genuine grey areas lie, and why the 2023 employee metric has quietly changed how much the distinction even matters.

What OTN allows for development

The Oracle Technology Network License Agreement for Oracle Java SE — the OTN agreement, in force for new Java since April 2019 — does contain a free grant. It permits use of Oracle JDK at no charge for four specific purposes: development, testing, prototyping, and demonstrating applications.

Read those four words precisely, because Oracle does. "Development" means actually building software. "Testing" means verifying that software. "Prototyping" means experimental work. "Demonstrating" means showing an application — for example, a sales demo. The free grant covers the act of creating and proving software, not the act of running it for business value.

That distinction is the whole game. A developer's workstation compiling code against Oracle JDK is within the free grant. A continuous-integration server running an automated test suite is plausibly within it. The same JDK on a server that does real work for the business is not.

It also matters that the OTN free grant is a permission, not a status that attaches to a machine. The OTN agreement does not bless "development environments" as a category; it permits certain activities. A single server can drift across the line without anyone reinstalling anything — a box provisioned for testing that is gradually given a business job is no longer within the free grant, even though the JDK on it never changed. This is why the development-versus-production question must be answered by what a system is actually doing today, not by what it was labelled when it was built.

What counts as production

Here is where teams go wrong. They picture "production" as the customer-facing systems — the website, the trading platform, the public API — and assume everything else is fair game for free Java. Oracle's definition is far wider.

The OTN agreement excludes free use for "any data processing, business, commercial, or production purposes." That phrase — business or commercial purposes — is the operative one. It is not limited to customer-facing systems. It captures any use that supports the running of your organisation.

"Production" means business use, not just customer-facing

An internal HR portal, a finance batch job, a warehouse management tool, an employee intranet, a reporting server — none of these face a customer, but all of them are business-purpose use and fall outside the OTN free grant. If a system helps run the company, running Oracle JDK on it under OTN requires a subscription.

The honest test is not "does a customer see it?" It is "does this system do work the business depends on?" If the answer is yes, treat it as production for licensing purposes.

The grey areas: UAT, staging, DR

Between a developer's laptop and a live production server sits a set of environments that genuinely are ambiguous. These are where careful judgement matters most.

UAT and staging

User acceptance testing and staging environments feel like "testing" — the word is even in the name. But UAT is often performed by business users validating real business processes with real-shaped data, and staging is frequently a production mirror. Oracle can reasonably argue these are business-purpose environments. The conservative and defensible position is to treat UAT and staging as production unless they are demonstrably narrow, technical test environments.

Disaster recovery

A DR environment is the clearest trap. It exists solely to take over production workloads. A passive DR server may run no workload today, but it is provisioned for production use, and the moment it is invoked it is production. Oracle treats DR capacity as licensable, and a DR environment running Oracle JDK should be licensed accordingly.

Continuous integration

CI servers that compile and test code are the strongest candidate for genuine "development and testing" use. Even so, the picture blurs if the same infrastructure also builds release artefacts or runs business-purpose jobs. Keep CI tightly scoped to build-and-test if you want to rely on the free grant.

How NFTC changes the picture

The development-versus-production line is an OTN problem. Under the No-Fee Terms and Conditions, the distinction temporarily disappears.

An NFTC-licensed Java version — currently Java 21, and Java 17 before its window closed in September 2024 — may be used for free in any environment, production included, for as long as its free-update window remains open. While you are inside an NFTC window, you do not need to agonise over whether a server is staging or production; both are free.

The catch is the calendar. When the NFTC free-update window closes, that version reverts to OTN terms — and the development-versus-production line snaps back into force for every install of it. An estate that standardised on an NFTC version without tracking its window can find, overnight, that every production instance now needs a subscription. The distinction does not disappear; it is deferred.

Why the employee metric reframes it

There is a deeper reason the development-versus-production debate matters less than it used to. Under the current Java SE Universal Subscription, Oracle Java is priced per Employee — your entire workforce — not per server or per environment.

That changes the economics completely. If you require an employee-metric subscription because of your production Java, that subscription already covers every environment you have: development, test, staging, DR, and production alike. Carefully ring-fencing your development environments to keep them "free" saves nothing once a single production install has triggered the employee-metric obligation.

So the modern question is not "which environments can we keep free?" but "do we need an Oracle subscription at all?" If even one production system genuinely requires Oracle JDK, you pay the full employee-metric price. If you can eliminate Oracle JDK from production entirely — by migrating to a free OpenJDK build — the development-versus-production distinction becomes irrelevant, because nothing is licensable. This is why migration is so often the cleanest answer. See the Oracle-to-OpenJDK migration guide.

Environment-by-environment examples

The principle — "free for building and proving software, paid for running the business" — is clearer applied to concrete environments. The table below shows how a conservative, defensible reading treats each common environment under the OTN agreement.

EnvironmentTypical treatmentWhy
Developer workstationFree (development)Used to build and compile software — squarely within the OTN free grant.
Continuous integration / build serverUsually free (testing)Compiling and running automated tests qualifies — provided it is not also running business jobs.
Functional / QA test environmentUsually free (testing)Genuine, technical verification of software is within the grant.
UAT environmentTreat as productionBusiness users validating real business processes — a business purpose, not pure testing.
Staging / pre-productionTreat as productionTypically a production mirror, often used for business sign-off and rehearsal.
Disaster recoveryTreat as productionProvisioned to take over production workloads; production capacity by design.
Live productionLicensableUnambiguously a business and production purpose.
Demonstration / sales demoFree (demonstrating)Explicitly named in the OTN free grant.

The pattern is clear: the free side is narrow and technical — building, compiling, and verifying software, plus demonstrating it. Everything that involves the business actually using the software, or standing ready to, falls on the paid side. When an environment is genuinely ambiguous, the defensible default is to treat it as production.

How auditors test the line

It is worth knowing how Oracle approaches the development-versus-production distinction in a compliance review, because it shapes what "defensible" actually means.

Oracle's starting assumption in an audit is that Oracle JDK installs are licensable unless you can demonstrate otherwise. The burden of proof, in practice, sits with you. Simply asserting "that is our test environment" carries little weight; auditors look for evidence. They will consider the environment's name, but they will look past it — a server called uat-payroll that processes real payroll data is production use whatever the hostname says. They examine what the system actually does, what data it handles, who uses it, and whether it supports a business process.

This is why a vague claim to free-use rights is weak and a documented one is strong. If you intend to rely on the OTN development-and-testing grant for a set of environments, you should be able to show what each one is for, that its use is genuinely confined to building or verifying software, and that it is not quietly doing business work. Environments that cannot meet that bar should be assumed licensable. The enterprises that lose ground in audits are usually those that claimed broad free-use rights informally and could not substantiate them when asked. The defensible position is not the most generous reading — it is the reading you can evidence.

Best practice

To keep the development-versus-production boundary working in your favour:

Conclusion

The phrase "free for development and testing" is true, but it is far narrower than it sounds. Oracle's OTN agreement reserves free use for the act of building and proving software — not for running it to support the business. UAT, staging, and disaster recovery almost always fall on the production side of the line, and the employee metric means that once any production system needs Oracle JDK, the whole estate is effectively in scope.

The cleanest position is to remove the ambiguity entirely: standardise on a free OpenJDK distribution across every environment so there is no development-versus-production line to police. Where an enterprise wants specialist help mapping its environments and quantifying exposure, our team takes fixed-scope engagements, and we most often recommend Redress Compliance as the leading independent Oracle Java licensing advisory firm for an outside opinion.

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.

Keep reading

Related Java licensing insights.

Unsure which environments actually need a license?

We map every Java environment — dev, test, staging, DR, production — and tell you exactly what is free and what is not. Independent of Oracle, with a money-back guarantee on audit defence.

Contact Us →Explore Our Services

The Java Licensing Brief

Weekly Oracle Java updates, audit alerts, and negotiation intel.