Oracle Java license management

Overview

Summary

In 2023, Oracle updated its Java licensing model by introducing the new Oracle Java SE Universal Subscription: among the many improvements, this could also lead to significant increases in licensing costs for some companies. This new licensing model makes it critical to keep track of the presence of different versions of Oracle Java (especially pre-v17) in an environment, as even having a single binary can result in huge licensing costs. Additionally, in 2021, Oracle released its new Oracle No-Fee Terms and Conditions (NFTC) license, which makes new (v17 and later) LTS releases free for production use in most cases. This new library pack helps detect the use of various Java packages, determine which category (NFTC-applicable, NFTC-not-applicable, third-party Java) it belongs to, and suggest further remedial actions.

Problem

Since the late 1990s, Oracle Java has had 21 major releases subject to various license agreements that can depend on versioning and security patch level.

Today, managing different Java-dependent applications along with different versions of Oracle and third-party versions of Java, as well as their compatibility and licensing can be a nightmare for organizations. This is due to the difficulty in monitoring Java presence and versioning, the relation of each instance to a particular application (if any) and determining the applicable licensing model (whether an application that depends on Java includes an Oracle Java license, which of the Oracle Java license agreements apply, etc).

Besides the associated difficulty, the change in Oracle’s license pricing model means that unprepared organizations will rapidly face high—and often unnecessary—costs.

Solution

This library pack provides a dashboard to monitor in real-time Java presence, versioning, and their general licensing category across the entire landscape to comply with Oracle Java licensing requirements at scale.

This library pack uses the following Oracle Java licensing decision diagram:

These three categories are defined in the pack:

  • NFTC-applicable Oracle Java versions: NFTC stands for Oracle No-Fee Terms and Conditions license. This category of Java versions likely does not require a license to be used in a production environment.

  • non-NFTC Oracle Java versions: This category includes versions of Oracle Java below v17, which may potentially be eligible for the new Oracle Java SE Universal subscription, which requires a license for use in a production environment. A more precise analysis is needed for Oracle Java in this category because the licensing model applied depends on the features used, the purpose of use, versions, and security patch level.

  • Non-Oracle/OpenJDK Java: OpenJDK and non-Oracle Java are third-party builds of Java and are available as open-source products or subject to different license agreements than Oracle versions of Java. These versions are not eligible for the new Oracle Java SE Universal subscription.

Please note: Oracle Java license agreements take into account not only Java version and availability on devices, but also security patch levels, use of Oracle "commercial features", the purpose of use, and other factors that are technically impossible to track. The dashboard acts as an advisory source of data and should not be used as a software asset management tool.

Key features

  • Immediate detection of Java presence across all endpoints.

  • Visualization of the general licensing classification for each Java version.

  • Monitoring the presence of different versions of Java.

Changelog

V1.0.0.0 - Initial Release

V1.1.0.0 - The pack has been redesigned to use Package.Installed_packages instead of Execution.Events. This helps detect installed versions of Java even if they are not in use. In-product documentation is also included.

Dependencies

For version 1.1.0.0, this library pack does not have any dependencies.

Pack Structure

The pack comprises a single dashboard with three tabs. This dashboard is described below.

Oracle Java licensing dashboard

This dashboard utilizes tabs to separate content. The Oracle Java tab provides a quick overview of any version of Java used in the organization, as well as a breakdown of all versions of Oracle Java. The following non-Oracle/OpenJDK Java tab shows the use of third-party (non-Oracle) and OpenJDK versions of Java in your organization. The third Device Overview tab should be used with a set of dashboard filters to identify the specific versions of Java installed on the device. Dashboard filters common to each tab allow you to select a specific location, package name, package version, package publisher, or device name. Three levels of localization are provided: Country, State, and City, and these are based on and restricted by the level of Geo-IP localization that has been configured.

Oracle Java

For software asset managers, application owners, and EUC managers, the Summary section of the dashboard is the place to start to get a quick overview of the state of the Java instances in the organization.

The tab is split into two general sections:

  • Java overview - This section includes key indicators: the total number of devices with any versions and releases of Java; the number of devices with Java versions that are not covered by the Oracle No-Fee Terms and Conditions (NFTC) license; the number of devices with versions of Java covered by the Oracle No-Fee Terms and Conditions (NFTC) license and third-party instances of Java.

  • Oracle Java breakdown - This section displays the number of devices with each of the following Oracle Java categories, a line chart showing the trend of this number, and a breakdown of the Java version by the number of devices with that version.

    • non-NFTC Oracle Java versions

    • NFTC-applicable Oracle Java versions

non-Oracle/OpenJDK Java

There are builds of Java created by Oracle or third-party vendors (Microsoft, Red Hat, Amazon, Azul, etc.) that are available as open-source products or that are subject to different license agreements than the Oracle Java versions. Usually, such Java builds are called OpenJDK.

Many companies may decide to move from Oracle Java to third-party Java or open-source Java, and this tab is designed to track that process.

This tab displays key information related to non-Oracle/OpenJDK versions of Java: a line chart showing the trend in the number of devices with non-Oracle/OpenJDK Java and a breakdown of those Java versions by the number of devices with this version.

Device and package breakdown

This tab contains a table with devices and packages installed on those devices. It is intended to be used together with dashboard filters: Device name, package name, package version; and package publisher.

If the package name with package version and package publisher filters are applied, the table on this tab will show all devices with specific versions of Java.

If a device name filter is applied, the table will list all packages installed on the selected device (including non-Java packages). It is recommended that you use the device name filter in conjunction with the package name, package version, and package publisher filters to specify only Java packages.

Last updated