Oracle Java Licensing Models & Metrics

Java SE Subscription vs Java SE (Perpetual) License

Java SE Subscription vs Java SE license

Java SE Subscription vs Java SE (Perpetual) License

For years, Java was something you bought once and owned forever. Then, in 2019, Oracle changed the rules. Perpetual licenses were replaced with subscriptions, turning Java into an annual cost rather than a one-time asset.

This guide breaks down exactly how that shift impacts rights, renewals, and long-term costs for organizations.

If you’re in IT, procurement, or legal and still unsure what changed, read on. (For background on Oracle’s new licensing model and how it evolved, see our Licensing Models & Metrics Explained guide.)

Pro Tip: Perpetual Java gave you ownership. Subscriptions give you obligations.

What Was the Java SE Perpetual License?

Before 2019, organizations could buy perpetual Java SE licenses—pay once, use forever. The license itself never expired, granting indefinite rights to run a specific Java version.

Annual support contracts were optional for receiving updates and fixes, but you weren’t forced to renew support to keep using your licensed software.

Key features of the old perpetual model:

  • One-time purchase: A single upfront fee buys you the right to use a given Java SE version indefinitely.
  • Never expires: You can continue running the licensed Java version indefinitely (even if you stop paying for support).
  • Optional support: Annual support/maintenance (around 20% of the license cost) was optional. If you paid it, you got updates and patches; if not, you could still use Java, just without new fixes.
  • No automatic upgrades: Buying a license covers only that version. New major versions required a new purchase or separate license if you wanted them.

Example: A company that purchased a Java SE 8 license in 2016 can still legally use Java 8 today without paying Oracle again — though they won’t receive any new patches after their support ended. The license was theirs to keep.

In short, perpetual meant you could stop paying and still keep running Java. Organizations liked this model for its certainty: once paid, they “owned” the right to use that Java version in production indefinitely.

Pro Tip: Perpetual meant you could stop paying and still keep running Java.

What Is the Java SE Subscription?

In 2019, Oracle replaced perpetual licensing with the Java SE Subscription—a time-limited, recurring model. Now you pay annually (or monthly) for both the right to use Java and access to updates/support. If you stop paying, your rights to use Oracle’s Java end. Essentially, Oracle turned Java into a subscription service.

Key features of the subscription model:

  • Recurring fee: You pay an ongoing subscription (priced per user or per processor, billed monthly or yearly) instead of a one-time cost. It’s an operating expense, not a one-time capital purchase.
  • Use rights tied to payments: Your right to use Oracle Java exists only while the subscription is active. If the term expires without renewal, you lose the license to run Oracle Java in production.
  • Updates and support included: As long as you subscribe, you get all updates, security patches, and support as part of the package (no separate support contract needed—it’s bundled in).
  • No ownership – just access: You’re essentially renting Java. There’s no perpetual entitlement; the software license is contingent on continuous payment.

In practice, this meant companies now must budget for Java every year. Oracle’s Java SE Subscription was initially priced under traditional metrics (e.g., per Named User or per Processor core), so you could subscribe only for the users/servers that needed Java.

Over time, Oracle has adjusted terms (introducing an employee-count model in 2023), but the core idea remains: no pay, no play.

Note: Oracle also introduced a No-Fee Java License (NFTC) in 2021 for certain Java versions, allowing temporary free use of the latest Java LTS release.

Compare the license modelsOracle Java Per-Processor vs Per-Employee.

But it’s not a return to perpetual free rights – the no-fee period expires after the next Java release, after which you must pay for a subscription to stay updated. In other words, NFTC delays costs; it doesn’t eliminate them.

Pro Tip: Stop paying? Lose rights. It’s that simple.

Table – Java SE Subscription vs Perpetual License

The table below compares the two models side by side:

FeaturePerpetual License (Pre-2019)Subscription (2019+)
OwnershipPermanent – use foreverTime-limited – expires at renewal
Cost StructureOne-time purchase + optional supportOngoing annual (or monthly) fee
Updates & PatchesOnly with active support contractIncluded while subscribed
Support RequirementOptional (you could opt out)Mandatory (built into subscription)
Audit ExposureLow (after purchase, no expiration to track)Continuous (must prove active subscription)
UpgradesNew major versions required new licensesNew versions included during term
Post-Expiration RightsCan continue using licensed version indefinitelyMust stop using Oracle Java if subscription ends
Typical Use CaseStable, legacy environmentsModern enterprises with ongoing needs
AvailabilityDiscontinued (no new perpetual sales after 2019)Active model (current standard)

As shown above, the shift is dramatic: under the perpetual model, you owned a static version, whereas under subscription, you’re always renting the software.

Even though the subscription includes the “extras” (patches, upgrades), it fundamentally resets your rights every year.

Pro Tip: The subscription model doesn’t improve value — it resets the clock on your rights.

License models per use case, Licensing Oracle Java in Development, Test, and Production.

3-Year Cost Comparison Example

To visualize the cost difference, let’s compare a scenario under each model:

ScenarioPerpetual ModelSubscription Model
License for 200 CPUs$100,000 (one-time purchase)$35,000 per year
3-Year Total Cost$100,000$105,000
6-Year Total Cost$100,000$210,000
Support After 3 YearsOptional (~$20,000/year)N/A (support is included, but must keep paying)

Takeaway: Over a multi-year period, the subscription model costs more. In this example, a one-time $100k perpetual license remains $100k even after 6 years (if you forego support), whereas a subscription costs $210k over 6 years.

The subscription includes continuous updates and support, whereas the perpetual model would only provide them if you paid for annual support.

But purely from a licensing spend perspective, perpetual was cheaper in the long term — if you could live without ongoing support or were comfortable staying on an older version.

Pro Tip: Subscriptions trade stability for continuity — and you’ll pay for both.

Compliance & Risk Implications

Switching from perpetual to subscription has major compliance and risk implications:

  • Under a perpetual license: Once you bought it, you had a license in perpetuity. There was no expiration date to trigger non-compliance. Your main compliance concern was staying within your licensed quantities and not using unlicensed features. However, running an outdated Java (without patches) carries security risks – you risk vulnerabilities if you don’t have an active support contract, but not a licensing violation. Audit risk was relatively low after the initial purchase, since you weren’t forced into new agreements just to keep using your software.
  • Under a subscription: Compliance is a constant concern. If your subscription lapses and you continue to run Oracle Java, you are now unlicensed—a clear compliance violation. Oracle can require that you either renew or cease use of Oracle’s binaries immediately. This means every renewal date is a potential risk: missing a payment or forgetting to renew on time could technically put your organization out of compliance overnight. Audit exposure is higher because Oracle knows you must keep subscribing; they may audit to ensure you haven’t exceeded your licensed counts or that you’re not still using Java after a subscription term ends. In short, license compliance under subscription is an ongoing obligation, not a one-and-done checkpoint.

Also, consider the “end-of-term” trap: with perpetual licenses, after the purchase, you could never accidentally fall out of license (you owned it).

With subscriptions, the day your term ends, if you haven’t renewed but Java is still installed in production, you’re at risk. Oracle’s compliance enforcement for Java has ramped up since 2019, precisely because it now ties usage to active subscriptions.

Pro Tip: In Oracle’s world, compliance starts the day your subscription ends.

Checklist – How to Verify Your License Type

Not sure whether your organization has a perpetual Java license or a subscription?

Use this quick checklist to confirm your license type:

  • Check the contract date: If your Java SE agreement started before 2019, it’s likely a perpetual license (Oracle hadn’t yet phased them out). Contracts from 2019 onward are usually subscriptions.
  • Review the “License Type” wording: Look in your Oracle agreement for terms such as “perpetual,” “term,” or “subscription.” If it explicitly mentions a subscription term (e.g. 1 year, 3 years), then you have a subscription. If it says perpetual or has no end date for usage rights, it was a perpetual license.
  • Support clause: Does the contract separate license and support? Perpetual license deals often have an optional support renewal clause (e.g., you can renew support annually). Subscription agreements typically bundle support and make it mandatory (you pay for it as part of the subscription). If support is optional, that hints at a perpetual license.
  • Post-expiration rights: Identify if the contract grants any rights after expiration. Perpetual licenses will usually state that you have a perpetual right to use the software. Subscription contracts state you must stop using the software when the term ends. This language is a clear indicator.
  • License metrics: Note the listed license metric. Older deals may mention Processor or Named User Plus (NUP) licenses (common in perpetual and older subscription models). If your agreement mentions an Employee count or is called “Java SE Subscription,” it’s the newer subscription model. (Oracle’s recent “Java SE Universal Subscription” uses an employee-based metric.) Knowing the metric helps pinpoint the model.

If you find terms like “subscription term” or an end date in your paperwork, you do not own Java outright — you’re essentially renting it under Oracle’s terms.

Pro Tip: If your contract mentions “subscription term,” you don’t own Java — you rent it.

5 Rules for Managing Java Subscriptions

Keeping on top of Java licensing can be challenging.

Here are five rules to help your team manage Oracle Java subscriptions and avoid costly surprises:

1️⃣ Know your legacy rights — If you have old perpetual Java licenses, remember that those usage rights don’t expire, even if the support did. Leverage these in environments where you can stick to older Java versions. (Don’t let Oracle sales reps convince you that you must migrate everything to a subscription if a perpetual license still covers your needs.)

2️⃣ Don’t mix models blindly — If you have a mix of perpetual and subscription licenses, track them closely. Mixing license types is fine, but you need clear records of what is covered under your perpetual entitlements versus your subscription. This avoids accidentally double-paying or assuming something is licensed when it’s not. Good Java lifecycle management practices (tracking versions and entitlements) are essential here.

3️⃣ Reconcile before migrating — Before you renew or switch to a new Oracle Java licensing model, reconcile what you already own. For example, if you had 100 processors licensed under a perpetual Java SE agreement, ensure that any new subscription covers only what’s beyond that, or that you’re getting credit. Don’t let a new subscription deal ignore the value of your existing assets. Negotiate with Oracle using your current entitlements as leverage.

4️⃣ Use perpetual licenses strategically — Deploy your perpetual Java licenses in stable, legacy environments that won’t upgrade frequently. This lets you avoid ongoing costs for those systems. Save subscriptions for where you truly need the latest version or support. In other words, maximize the use of what you’ve already paid for, to minimize how much of your environment requires a new subscription.

5️⃣ Project multi-year costs — Always model the 3- to 5-year cost of a Java subscription before signing or renewing. What seems like a manageable annual fee can compound significantly. Budget for the long term. Compare the subscription costs to the one-time cost (if perpetual were an option) or to the expense of migrating to a free OpenJDK alternative. By understanding the total cost of ownership over several years, you can make a smarter decision about renewing Oracle’s contract versus exploring other options.

Pro Tip: Your old licenses are assets. Oracle wants you to forget that.

By understanding these differences, organizations can better plan Java renewals or replacements. Oracle’s move from perpetual to subscription licensing fundamentally changed Java, turning it from a one-and-done purchase into an ongoing service.

Knowing what was lost – and how to mitigate the cost and compliance impacts – is key to managing Java in the enterprise going forward.

Read about our Java Advisory Services

Oracle Java Licensing Models Explained: How Oracle Counts (and Charges) You

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