Over the course of several posts, we have covered various aspects of Oracle Java licensing. However, due to the increasing number of Oracle Java questions we field and the evolving nature of the topic, we have consolidated our coverage of the key aspects of Oracle Java license management into this article. Please check back periodically for updates as things change and evolve in the world of Oracle Java licensing.
Table of Contents
1. Oracle Java Licensing – A Brief History.
Oracle Java licensing has experienced significant changes recently, particularly in April 2019. Below is a concise history and overview of the licensing updates, without delving into the technical and contractual specifics of each licensing framework.
The Java platform is based on the Java programming language and was originally developed by Sun Microsystems.
It was first released in 1995.
Oracle acquired Sun Microsystems in 2009-2010.
Oracle introduced the Binary Code License Agreement (BCLA) to govern the use of Oracle Java SE.
Oracle later introduced two additional licensing schemes:
The Oracle Java SE commercial license
The Oracle Technology Network for Java SE license
Licensing details for these schemes are discussed further below.
Key Milestones in Java Licensing:
Pre-2019: Oracle Java SE licensing was free or generally permissive, requiring licensing only for certain commercial features.
April 2019: Oracle revised its licensing, requiring commercial licenses for all new Oracle Java updates and versions.
January 2023: Oracle introduced a new Java license model, replacing user-based and processor-based metrics with an Employee for Java SE Universal Subscription model.
Oracle Technology Network License Agreement for Oracle Java SE (Java OTN License).
Oracle’s OTN licensing model is meant for licensing coverage for non-commercial use. The Java OTN license terms can be read here: Oracle Java SE License. Under OTN license rules, any type of usage that qualifies as “personal”, experimental, non-production and non-commercial would be covered by the OTN license allowance.
In addition to the limited allowance mentioned above, OTN also provides commercial use coverage for certain programs under what Oracle calls “Schedule A & B programs” – these are Oracle programs that include or require Oracle Java for related use only, and Oracle Java included with these programs may not be used for other purposes. The Schedule A & B products per Oracle’s OTN agreement are as follows: Oracle Approved Product Use List for the OTN License Agreement for Java SE
In summary:
- OTN allowance is restrictive and does not permit any production usage.
- Schedule A & Schedule B products may leverage Oracle Java under OTN rules. Worth noting for Schedule B is that the coverage extends to usage of any higher-level products too, even if that’s not explicitly stated in the table above. For example, Oracle Business Intelligence (OBI/OAS) and Identity Management products run on WebLogic application server. The use of Oracle Java to support OBI/OAS and Identity Management products would be automatically covered through Schedule B above.
- A very critical point to keep in mind about OTN licensing in case you are dealing with aggressive Oracle Sales or auditors – the mere presence of Oracle Java under OTN license rules does not automatically require a license. To exceed the OTN allowances, you must actually use it in an unapproved manner, and the mere presence of Oracle Java does not trigger a license requirement.
Pre- April 2019 – Binary Code License Agreement (BCLA) and Java SE Licensing.
After Oracle’s acquisition of Sun in 2009-2010, Oracle Java was, to a great extent, “free” for commercial usage. This was covered by the Binary Code License Agreement (BCL For Java SE (oracle.com). This allowed “general purpose computing”, i.e., most personal and commercial uses, with limitations on embedded applications (these required a separate agreement).
Also, during this phase of licensing, there were some Java commercial features (like “Java Mission Control”, JRockit and others) that required a commercial Oracle Java license. However, measuring and tracking usage of these features was complex and generally not of much licensing interest to Oracle’s licensing team.
During this phase, Oracle Java was licensed on the “Processor” metric – this applied to desktops and servers. During this phase, as far as we have seen, Oracle did not perform any formal Oracle Java license audits.
April 2019 License change.
This was the major change that caught many Oracle Java users by surprise. With this change in Oracle Java licensing, all Oracle Java versions and updates – including JDK and/or JRE – required a commercial license, unless covered by OTN licensing allowance (OTN allows for Oracle Java usage for personal and evaluation use, as noted above). This coincided with Oracle Java v8 Update 211. Oracle Java v8 Update 202 was the last “free” version. Oracle Java v8 Update 211+, including Oracle Java v9 – v16, required a commercial license for most use cases.
With this change, Oracle retired the previous perpetual “Processor” licensing metric for all environments, and introduced new licensing metrics as follows:
- Oracle Java SE Desktop Subscription: Applies to desktop users. While this generally correlates with desktop instances, they key point to consider is that it applies to desktop users. So, if several users are accessing a single desktop, they all need to be counted separately as requiring a Java SE Desktop subscription. Often, the number of desktops is counted for determining the number of licenses required, but this may be misleading or insufficient.
- Oracle Java SE Subscription: Applies to server deployments and is licensed on the Oracle “Processor” license metric. The “Processor” is very common for Oracle Database and Middleware programs and is dependent on the number of cores the Oracle program is running on. In the case of virtualized environments (like VMware), cluster- and farm-level cores may need to be counted. The topic of Oracle licensing in virtualized environments is an involved topic we have covered in previous blog posts, but the concepts and challenges apply here directly.
This licensing scheme is considered legacy and is no longer offered by Oracle but may be negotiated by customer for future contracts through methodical procurement planning and negotiation. We will discuss this in more detail in a future update.
September 2021 – No-Fee Terms & Conditions (NFTC).
Oracle introduced NFTC licensing which essentially makes Oracle Java free for personal and commercial use – but with important caveats to keep in mind. This starts with Oracle Java v17. LTS releases (v17 and v21) get free patches for a period of 3 years. After that, any patches provided by Oracle after the 3-year period require a commercial license. Non-LTS releases (v18 and v22) include free patches for six months. See table below from Oracle’s Java SE licensing page (Oracle Java SE Support Roadmap).
The key implications of NFTC licensing are:
- This can be an effective tool for removing or reducing the need to purchase Oracle Java licenses; Customers need simply upgrade older Oracle Java to one of the above versions to be covered by NFTC license rules.
- However, customers must take care to not overstep the patching deadlines, after which a commercial license is required. For example, Java 17 patches starting October 2024 will either be covered by OTN license rules (subject to OTN restrictions) or require an Oracle Java SE license.
As of the writing of this article, the last update for Oracle Java 17 is 17.0.11.0.2, released on June 21, 2024.
January 2023 – Java SE Universal Subscription – License Metric Change to “Employee”.
Oracle replaced previous Oracle Java license metrics with the slightly renamed “Java SE Universal Subscription” offered only on the “Employee” license metric. The older Desktop and Server license metrics were removed.
Per this new metric, if there is any Oracle Java used anywhere in a customer’s environment, such use that is not covered by OTN or NFTC license rules, then Oracle requires the customer to license Oracle Java for all employees, contractors and subcontractors of the company.
To highlight the excessive breadth and depth of this new metric, I have copied the definition below (as seen here: Oracle Java SE Subscription Global Price List):
Employee for Java SE Universal Subscription: is defined as
(i) all of Your full-time, part-time, temporary employees
(ii) all of the full-time employees, part-time employees and temporary employees of Your agents, contractors, outsourcers, and consultants that support Your internal business operations. The quantity of the licenses required is determined by the number of Employees and not just the actual number of employees that use the Programs. For these Java SE Universal Subscription licenses, the licensed quantity purchased must, at a minimum, be equal to the number of Employees as of the effective date of Your order. Under this Employee metric for Java SE Universal Subscription Programs(s), You may only install and/or run the Java SE Universal Subscription Program(s) on up to 50,000 Processors, If Your use exceeds 50,000 Processors, exclusive of Processors installed and/or running on desktop and laptop computers, You must obtain an additional license from Oracle.
So, if a company with 5,000 employees only has 10 people actually using Oracle Java, the company must license Oracle Java for all 5,000 employees and fork over $600,000! What if the company hires 20 contractors from Accenture – do they need to also license Oracle Java for all 733,00 Accenture employees? That’s what is explicitly stated in section (ii) in the metric definition above.
We have not yet seen this egregious licensing scheme applied by Oracle successfully often (despite Oracle’s attempts), but this is a potentially very expensive licensing option for most customers and is generally considered extremely punitive. In fact, the legal defensibility of this metric could also be questionable, though we have not seen this challenged in court (yet!). We will keep you posted if that changes.
With the above brief history of Oracle Java licensing, we will go over some specific topics in future posts, like negotiating Oracle Java procurements, handling Java audits, and how to carefully tiptoe around NFTC.
2. Oracle Java – Current & Recent Licensing Schemes & Prices.
“Employee” License Metric.
As discussed above, the “Employee” license metric has been around since January 2023. Current pricing is as follows:
| Monthly Subscription Price | # of Employees |
| $15.00 | 1-999 |
| $12.00 | 1,000-2,999 |
| $10.00 | 3,000-9,999 |
| $8.25 | 10,000-19,999 |
| $6.75 | 20,000-29,999 |
| $5.70 | 30,000-39,999 |
| $5.25 | 40,000-49,999 |
| Contact Oracle for details | 50,000+ |
Oracle Technology Network License Agreement (Java OTN License):
Oracle’s OTN licensing model applies to non-commercial usage, such as personal, experimental, and evaluation purposes. Under the OTN license:
Production usage is not permitted.
Commercial use is allowed only for specific “Schedule A & B programs.”
Important Notes:
The presence of Oracle Java under OTN rules does not automatically require a license unless unapproved usage occurs.
Binary Code License Agreement (BCLA):
Before April 2019, Oracle Java was licensed under BCLA for general-purpose computing. Commercial features like “Java Mission Control” required separate licenses. During this phase, Oracle relied on the “Processor” metric, which applied to desktops and servers.
Licensing Changes Post-2019:
Oracle retired the processor-based licensing metric and introduced:
Oracle Java SE Desktop Subscription: Licensed per desktop user.
Oracle Java SE Subscription: Licensed per processor, including virtualized environments like VMware.
September 2021 – No-Fee Terms & Conditions (NFTC):
Oracle introduced NFTC licensing for Java SE v17 and later, allowing free usage with limitations:
LTS versions (v17, v21): Free patches for 3 years.
Non-LTS versions (v18, v22): Free patches for 6 months.
Post-patch periods require a commercial license.
- Java SE Desktop Subscription. This was licensed on Oracle’s familiar Named User Plus license metric. Essentially, it was user-based licensing. In practice, each desktop instance required 1 license. In the case of shared machines, the total distinct persons with access to the machine had to be counted towards the license count. Formally, Oracle defined the license metric as follows:
Named User Plus: is defined as an individual authorized by you to use the programs which are installed on a single server or multiple servers regardless of whether the individual is actively using the programs at any given time. A non human operated device will be counted as a named user plus in addition to all individuals authorized to use the programs, if such devices can access the programs. If multiplexing hardware or software (e.g., a TP monitor or a web server product) is used, this number must be measured at the multiplexing front end. Automated batching of data from computer to computer is permitted. You are responsible for ensuring that the named user plus per processor minimums are maintained for the programs contained in the user minimum table in the licensing rules section; the minimums table provides for the minimum number of named users plus required and all actual users must be licensed.
- Java SE Subscription (Servers). This program was licensed on another familiar Oracle license metric – the “Processor”. As discussed in our posts on Oracle licensing basics, for “Processor” license counting, customers must first count all physical cores where the Oracle programs – in this case Oracle Java SE – are installed and/or running. This includes counting appropriately in physical, virtual/VMware, cloud and hard-partitioned environments. Subsequently, the Oracle Processor Core Factor must be applied to calculate the overall Processor license requirement. Formally, Oracle defined the license metric as follows:
Processor: shall be defined as all processors where the Oracle programs are installed and/or running. Programs licensed on a processor basis may be accessed by your internal users (including agents and contractors) and by your third-party users. The number of required licenses shall be determined by multiplying the total number of cores of the processor by a core processor licensing factor specified on the Oracle Processor Core Factor Table which can be accessed at http://oracle.com/contracts. All cores on all multicore chips for each licensed program are to be aggregated before multiplying by the appropriate core processor licensing factor and all fractions of a number are to be rounded up to the next whole number. When licensing Oracle programs with Standard Edition One, Standard Edition 2 or Standard Edition in the product name (with the exception of WebCenter Enterprise Capture Standard Edition, Java SE Subscription, Java SE Support, Java SE Advanced, and Java SE Suite), a processor is counted equivalent to an occupied socket; however, in the case of multi-chip modules, each chip in the multi-chip module is counted as one occupied socket.
Oracle Java SE Desktop Subscription Pricing
| Monthly Subscription Price | Subscription Metric | Volume |
| $2.50 | Named User Plus | 1-999 |
| $2.00 | Named User Plus | 1,000-2,999 |
| $1.75 | Named User Plus | 3,000-9,999 |
| $1.50 | Named User Plus | 10,000-19,999 |
| $1.25 | Named User Plus | 20,000-49,999 |
| Contact for Details | Named User Plus | 50,000+ |
Oracle Java SE Server Subscription Pricing
| Monthly Subscription Price | Subscription Metric | Volume |
| $25.00 | Processor | 1-99 |
| $23.75 | Processor | 100-249 |
| $22.50 | Processor | 250-499 |
| $20.00 | Processor | 500-999 |
| $17.50 | Processor | 1,000-2,999 |
| $15.00 | Processor | 3,000-9,999 |
| $12.50 | Processor | 10,000-19,999 |
| Contact for Details | Processor | 20,000+ |
Now, let’s revisit our prior example of a company with 5,000 employees, of whom 10 actually use Oracle Java. Let’s further assume there are a few physical and VMware VMs with Oracle Java that collectively have 200 Xeon cores (with a Core Factor of 0.5). If this customer could negotiate an Oracle Java purchase on the Java SE Desktop and Java SE (server) licenses, the cost would be as follows:
Desktops: 10 users * $25 * 12-months = $3,000
Servers: (200 cores * 0.5) * $23.75 * 12-months = $28,500
Total Java SE licensing cost for 12 months: $31,500
Just $31,500! Compare that with the new “Employee” license metric that would cost $600,000 for covering the same usage. As we will discuss further below, it’s critical for customers to understand the cost implications and that they legacy metrics may still be an option.
3. Guidance on effective software asset management (SAM) for Oracle Java.
Effective SAM is crucial for managing Java licensing requirements and avoiding compliance issues. Key practices include:
Auditing Current Java Usage: Identify all instances of Oracle Java, including legacy versions.
Understanding Oracle Licensing Metrics: For example, know how metrics like “Processor” or “Employee for Java SE Universal Subscription” apply to your environment.
Utilizing Oracle License Management Tools: These tools help track and manage licensing compliance.
Negotiating with Oracle: Prepare for audits and use tactics like leveraging the Oracle Processor Core Factor Table to estimate costs.
Proactively monitoring and tracking Oracle Java deployment and usage is critical to minimizing your Oracle Java costs. I will go over our general approach below. This approach should apply to all cases: whether you are completely eliminating Oracle Java, or simply quantifying and reducing the footprint, or are responding to an Oracle Java “inquiry” and are rapidly assessing and downsizing your footprint.
When we engage with clients around Oracle Java footprint quantification and downsizing, we apply the following general framework:
- Identify ALL Oracle Java installations. This includes JDK and JRE and all versions and builds. This can be done using a mix of tools (like SCCM, BigFix, ServiceNow, SNOW Software, and other software asset management tools). At Redwood Compliance, we also have our own tools and scripts that enable us to identify Oracle Java. Note that sometimes differentiating between Oracle Java and non-Oracle Java can be tricky, especially Oracle Java and OpenJDK.
- Starting with the above list, filter out all Oracle Java up to and including v8 update 202 – everything up until this is covered by BCLA or pre-April 2019 license rules.
- Classify Oracle Java across the following buckets:
- All v8u211+, v9-16. This bucket will require licensing after remaining steps are completed. Let’s call this Bucket A. Ensure the desktops and servers are covered.
- For v17+, classify them as NFTC covered licenses (for now) into, say, Bucket B. Further inspect the update numbers to ensure that updates after the “free” period have not been applied. For any NFTC licenses where updates past the cutoff date have been applied, move them to Bucket A as these may require a license.
- For all installations in Bucket A, perform the following:
- Review data to ensure that the Oracle Java instance is not covered by OTN Schedule A or Schedule B programs. If yes, flag as such and exclude from further counting.
- Review data to ensure that this Oracle Java is not covered by OTN usage allowance for personal and/or non-production use. If yes, flag as such and exclude from further counting.
- For the remaining population, inspect for third-party coverage; for any Oracle Java that is part of a third-party program installation, it may be covered by the third-party license agreement, or it may not be. In our experience, this step can be tedious and require following up with many third-party software vendors. Any third-party programs where the vendor cannot confirm with evidence that the Oracle Java license is included, these installations will remain in the overall count. Any installations confirmed to be part of third-party programs can be flagged as such and excluded from further counting.
- For the remaining population in Bucket A, review all installations and explore opportunities to uninstall/decommission, desktop clean-up, and/or consolidate workloads to reduce the license footprint. Where possible, consider alternatives like OpenJDK and other no-cost Java options.
If any remediations are performed, update and reduce the list of machines in Bucket A. - For the remaining desktops and servers in Bucket A, perform the following:
- Classify all desktops as needing Named User Plus licensing. This step does require further inquiries and analysis to determine the true “person” population if multiple users are sharing a desktop or if a single user has access to several desktop instances. Quantify the Named User Plus license requirement.
- For the servers, perform additional steps to calculate the “Processor” license requirement. This may include counting cores in physical, virtual/VMware, and other environment types. Quantify the Processor license requirement.
With the above steps, you should have a clear grasp on your Oracle Java license requirement. Next, apply legacy prices to calculate the estimated cost of Java licensing per the legacy metrics. For comparison purposes, also calculate the “Employee” based license cost estimates.
Additionally, we recommend instituting strong SAM procedures around Oracle Java. Typically, these include desktop and/or server image cleanup, blocking of automatic Oracle Java downloads and updates, and proactive communications with the end-users on Oracle Java licensing. We have also seen our clients push third-party software vendors who use Oracle Java to explore non-Oracle options.
4. Oracle Java sales tactics and audits.
In this section, I will summarize the key vectors Oracle uses with customers in the pursuit of Oracle Java sales. Oracle’s sales teams often use aggressive tactics, including:
Highlighting non-compliance during audits.
Proposing costly contracts for Oracle Java SE licensing.
Tips for Navigating Oracle Java Audits:
Familiarize yourself with Oracle licensing guides.
Document all Java usage to avoid disputes.
Challenge audit findings if they contradict your usage.
Oracle Sales and the “soft audit”.
The most common starting point seems to be Oracle Java sales reps reaching out to customers to “discuss Oracle Java licensing”. If left unchecked, this discussion may result in Oracle requesting and obtaining detailed information that can be incorrectly interpreted and essentially give Oracle enough ammunition to then pursue aggressive Oracle Java sales. Oracle will likely have done its homework on the number of employees at the company and be ready with an Oracle Java price quote based on the “Employee” metric. We generally recommend the following to our clients:
- You may not be legally or contractually obligated to talk to Oracle, unless you have some existing Oracle Java agreement.
- We recommend a single point of contact and generally not make the technical personnel available to Oracle for grilling.
- We suggest keeping things in writing/email, and NOT attend any phone calls. Even if you are an Oracle customer, you do not need to speak with them – communicating via email is sufficient.
- Strictly limit any information or data sharing with Oracle.
- Do not agree to any claims or assertions made by Oracle.
- Confidently demonstrate your grasp of Oracle Java licensing (hopefully this article will prepare you for just that!).
- Remember, Oracle Sales cannot perform a formal license audit. They must escalate to their licensing group for a formal audit.
- We advise against agreeing to any procurement to appease the sales teams.
Oracle Java License Audits:
We started seeing formal Oracle Java audits escalate in the last few years. Often these are bundled with a full scope Oracle audit but may also be Java-specific license audit. Disciplined push-back against the Oracle Java sales teams may result in a formal audit notice. We advise our clients to not fear audits. In fact, methodical preparation and planning is aimed at dealing with such a scenario.
Our general recommendations for dealing with Oracle Java audits are the same as for dealing with audits in general, with a few additional points:
- Challenge the Oracle auditors to prove and demonstrate their right to audit your Oracle Java footprint.
- Even if audit rights are established, the exact manner is often not stipulated, and you may not be required to run audit scripts.
- Always pushback against contractual interpretations by the Oracle auditors that you do not agree with or seem contractually unfounded.
- The OTN license allowance is often overlooked by Oracle. It’s up to the customers to lean on this.
A methodically handled Oracle Java license audit will not only minimize the total resolution cost but may also deter future audits.
5. Navigating Oracle Java procurement.
To manage Oracle Java licensing costs effectively:
Opt for NFTC licenses where applicable.
Review the Oracle Java SE Subscription Pricing.
Consider alternatives to Oracle Java, such as OpenJDK, which can reduce costs and dependency on Oracle.
When dealing with an Oracle Java procurement, the most important factor currently is methodically evading Oracle’s new “Employee” license metric, in favor of the legacy license metrics discussed above. However, in some case, it may be more favorable for a company to in fact choose the new license metric. Careful planning and calculating the costs for all licensing options is therefore important, whether resolving a formal license audit or making a regular Oracle Java purchase.
6. Long-term strategy for Oracle Java.
Given the frequent Oracle Java licensing changes, organizations should:
Regularly review Java license agreements.
Monitor updates on Oracle Java license costs and metrics.
Build a strategy for transitioning to OpenJDK or other alternatives if costs become unsustainable.
The most common long-term strategy we see our clients follow – and one that we readily recommend – is to simply move off of Oracle Java. In our experience, once a vendor goes down such aggressive tactics at the expense of customer relationship, they rarely backtrack.
Getting off Oracle Java may not be quick or easy, but often times alternative Java flavors (see below) may offer feature-parity anyway. In the short-term, reducing or minimizing the footprint is key to reducing the TCO. For third-party software vendors that require Oracle Java but do not include an Oracle Java license, sometimes customers simply have to push or prod them into switching and certifying other non-Oracle Java flavors.
Even with all this, ongoing, methodical SAM that can accurately detect and report Oracle Java is critical.
7. Alternatives to Oracle Java.
As mentioned above, there are many flavors of Java customers may choose from. OpenJDK is the reference implementation of Java. OpenJDK is open-source and maintained by a community that includes leading vendors like Oracle, Red Hat, IBM, and others.
Many vendors publish their own builds of OpenJDK and provide their own support options and services. These include Azul, Adoptium (successor to the AdoptOpenJDK; binary builds of the OpenJDK source), IBM, Redhat, AWS Corretto (no commercial support), and others.
A review of feature-parity between Oracle Java and non-Oracle flavors can often help informed decision making to migrate off of Oracle Java.
8. How we support our clients.
Our overall approach has essentially been covered above. If you grasp the fundamentals, you should be in good shape to handle any aspect of Oracle Java licensing – including dealing with the auditors.
We specialize in navigating Oracle Java licensing changes, including:
Conducting internal audits to identify non-compliance.
Providing guidance on Oracle licensing metrics.
Assisting with cost estimations and license negotiations.
When we assist our clients with Oracle Java license management, whether it’s proactive in nature or part of an Oracle audit response, we bring our experience and expertise to methodically that combines detailed technical analysis (as summarized above), engagement management support to fend off Oracle Sales and/or Auditors, communication and negotiation with Oracle, and procurement advisory around pricing, discounts and contract negotiation. We also advise and assist our clients with long-term on-going license management, including implementation of SAM frameworks.
As always, feel free to reach for a complimentary 1-hour consultation.
Read more about Oracle Cloud Infrastructure – Licensing, Discounts, & Support Rewards

I specialize in software licensing, IT cost management, and spend optimization. I help clients get the most value out of their IT investments while managing compliance risks. My career began at Deloitte & Touche LLP in the San Francisco/San Jose area, where I developed expertise in software license management around IBM, HP, Microsoft and other software vendors. I also assisted with SOX audits and business/IT controls. Later, I joined Oracle’s License Management Servers (LMS) group, performing license audits and contributing to the development of audit tools and methodologies.