Part of License & Price Change Watch — every vendor licence and price change we check, with the dates, and one free email the day a vendor changes terms.
Short answer: Oracle JDK 21 builds released through September 2026 stay free under Oracle's No-Fee Terms. From the Critical Patch Update of 20 October 2026, new Oracle JDK 21 updates are under the Java SE OTN license, which is not free for production, and Oracle prices the Java SE subscription per employee (on Oracle's price list of 8 October 2026: $10,000 a year for 101-500 employees, $10.50 per employee per month from 3,000). A CI job or Dockerfile that pulls the latest Oracle JDK 21 switches licence that day without anyone editing it. Paste the file below: the check names those lines and the free Temurin line for each. What changes on 20 October 2026 → Sources: Oracle JDK licence FAQ · Oracle Java blog, 2026-08-14 · Oracle Critical Patch Update calendar · Java SE Universal Subscription price list · read 2026-10-10.
Finds Java runtimes in your Dockerfiles, CI workflows and shell scripts that sit under Oracle's paid license terms, and shows the free OpenJDK line that replaces each one. Runs entirely in your browser — nothing is uploaded.
This page runs all 9 rules over the file you paste. The full version sweeps every file in your workspace and writes a dated evidence pack - file, line, distribution, license basis, free-window date and swap - to hand to procurement or to an Oracle audit.
Whole-workspace evidence pack - $29 once, one license key per person or CI seat
Same engine as the VS Code extension, byte for byte.
Free for the file open in your editor - no key, no limit. The workspace sweep and the report ask for a key.
VS Code MarketplaceOpen VSX (Cursor, VSCodium)npmMCP server (npx)Docker Hubext install ReadyStack.oracle-jdk-license-gate npx @readystack/oracle-jdk-license-gate <file> npx @readystack/oracle-jdk-license-gate --mcp
Team? One key for every ReadyStack linter, 5 seats, $149 once
$29 once. The same 9 rules swept over every file in the workspace instead of the one you have open, plus a dated evidence pack - file, line, distribution, license basis, free-window date and swap - to hand to procurement or to an Oracle audit. Team and commercial use included..
One payment, one licence key for this tool. The key is shown right after payment.
Oracle Java SE Universal Subscription is priced on the whole headcount, counting every employee in the company, not every Java install. On Oracle's price list of 8 October 2026 a 250-person company pays $10,000 a year and an 800-person company $54,160.
Buy the full version — $29· ReadyStack
Real numbers from this tool, line by line.

A release workflow from a 250-person software vendor came back from the gate on 2026-09-21 with 6 Oracle-licensed Java pulls, and the JVM platform engineer who wrote it had never once seen a red build.
Nothing in that repository was broken. The tests passed, the container started, java -version printed what it was supposed to print. The only thing that had changed was the calendar.
Oracle keeps a Java long term support release under the No-Fee Terms for one year after the next one ships. JDK 25 shipped in September 2025, so Oracle JDK 21 releases through September 2026 are No-Fee, and new Oracle JDK 21 updates from the Critical Patch Update of 20 October 2026 are under the Java SE OTN license, which is not free for production. JDK 17 made the same switch in October 2024. Java 8 and Java 11 never had a No-Fee window at all: those are Oracle Technology Network builds, free for development and test, not for production.
So a line like distribution: 'oracle' in a setup-java step is not a bug that was introduced. It is a line that was free last week and is billable this week, in a file nobody reopened.
That is the part tooling normally misses. A vulnerability scanner asks whether the runtime is patched. An end-of-life linter asks whether the version is still supported. Neither asks the licensing question, because the licensing question has no answer that lives in the file. It lives in the difference between two dates: the day Oracle's window closed and the day you are reading.
grep oracle has the same blind spot from the other direction. It will find the word in six places and tell you nothing about which of the six matter, and a chatbot whose training data stops before September 2026 will cheerfully tell you Oracle JDK 21 is free to use in production. It was, when the model was trained.
The bill is what makes this worth an afternoon. Oracle Java SE Universal Subscription is priced on the whole headcount, counting every employee in the company, not every Java install. On Oracle's price list of 8 October 2026 a 250-person company pays $10,000 a year and an 800-person company $54,160. The unit of billing is the payroll, not the container count, which is why one forgotten line in one Jenkins agent script can price the whole company.
Oracle JDK License Gate reads the file you have open - a Dockerfile, a CI workflow, a shell script, an .sdkmanrc - and runs 9 rules over it with no network call. It catches distribution: oracle, distribution: graalvm (which is Oracle GraalVM, not the community build), a tarball pulled from download.oracle.com, a script that sends oraclelicense=accept to get past the download gate, an image from Oracle's own Java container registry, an Oracle jdk-NN rpm installed with yum or dnf, a third-party oracle-java installer package, a build variable that accepts the Oracle license on your behalf, and an SDKMAN vendor suffix of -oracle or -graal.
Every finding carries four things: the line number, the license basis, the free-window status on today's date, and the free line that replaces it. distribution: temurin. distribution: graalvm-community. eclipse-temurin:21-jdk. An Adoptium API URL. The swap is usually one word.
The bundled sample tells you the shape of a real repository. _fixtures/dirty.yml is a five-job release workflow; the gate reports 6 Oracle-licensed Java pulls in it. _fixtures/clean.yml is the same workflow with OpenJDK lines and reports 0.
Move the date backwards and the answers move with it. Run the same JDK 21 file with today's date and you get a countdown to 2026-10-20; set the date to 2026-10-21 and the same findings become errors - because the file was never the thing that changed.
It reads the Dockerfile, CI workflow, shell script or .sdkmanrc you have open and names every line that pulls an Oracle-licensed Java runtime. Each finding carries the line number, the license basis, whether that Java version is inside Oracle's free window on today's date, and the free OpenJDK line that replaces it. 9 rules, no network call.
JVM platform and build engineers at companies that sell software. If your repository provisions Java in a container image, a GitHub Actions job, a Jenkins agent script or SDKMAN, one of those lines decides whether your company owes Oracle a subscription. The people who write those lines are rarely the people who sign the license.
grep finds the word oracle. It cannot tell you that new Oracle JDK 21 updates move from the No-Fee Terms to the OTN license at the 20 October 2026 Critical Patch Update (JDK 17 did the same in October 2024), so the same unchanged line that pulls the latest build is free this week and pulls a paid-licence build after that date. A chatbot trained before August 2026 will still tell you Oracle JDK 21 is free in production.
Free: all 9 rules over the file you have open, every finding with its line number and its swap. That job finishes on its own. Paid, $29 once: the same rules swept over every file in the workspace, plus a dated evidence pack with file, line, distribution, license basis and swap, for procurement or an audit. Team and commercial use included.
Oracle Java SE Universal Subscription is priced on the whole headcount, counting every employee in the company, not every Java install. On Oracle's price list of 8 October 2026 a 250-person company pays $10,000 a year and an 800-person company $54,160. The unit of billing is your payroll, not the number of containers that happen to run Java.
A general AI chat answers from training data with a cutoff date, cannot read your repository and names no rule version. Oracle JDK License Gate checks the file you open against 9 rules, each naming its legal or official basis, from a rule set dated 2026-09-21, and points at the exact line with the fix. For a filing, an audit or a client you need that dated result on your own files.
One question, answered by the person who built it. Your email only if you want the answer sent.
Paste this code into your page. It runs in your visitor’s browser and stays up to date. Nothing your visitors type is stored.
For businesses: your name and logo instead of ours, and each visitor’s result + e-mail in your inbox (only when they tick consent) — Pro from $19/month. See Pro →