So you want to start your migration from Oracle Java SE to an OpenJDK distribution. Your application engineering teams can’t identify all the Java distributions and versions in production. If you don’t account for one obscure Java-based application, your organization becomes subject to Oracle’s per-employee pricing, which can be very expensive.
Before you begin migrating Java from Oracle to an OpenJDK provider, you must do some basic discovery. Discovery includes identifying which versions of Java are being used by which applications and on which machines within your organization, including cloud instances. You will use the Java inventory to create a migration plan.
Make a Java inventory of JDKs currently in use
To create a complete Java Development Kit (JDK) usage inventory, examine each machine in your estate that runs any applications based on the Java Virtual Machine. This can be straightforward if you use IT asset management (ITAM) tools to monitor software usage. If you don’t use ITAM software, you’ll need to perform a manual inventory of machines. Tools are available to assist with this too.
Choose which JDKs to include by determining which ones still have a purpose and which ones don’t match up with anything you still run.
Building an inventory of Java distributions and versions is often the most time-consuming part of a JDK migration because of the variety of JDK versions in use. Typically, when a new application is deployed, it uses the latest version of the JDK.
Decide on the Java information you want to use
For each entry in the inventory, populate the following fields at a minimum.
- Type: A physical desktop, physical server, cloud instance, and/or container.
- Access details: The credentials needed to access a physical machine or cloud instance via a network connection with sufficient privileges to permit the JDK’s installation. For containers, these details will relate to how the container image is generated. This will probably be via continuous integration/continuous delivery (CI/CD) tooling and should include information enabling you to configure a different JDK for inclusion in the image.
- Operating system (OS): Which OS is in use, plus additional details about it, such as the edition, version, build number, and whether it’s 32 bit or 64 bit. The OS will typically be Windows, macOS, or Linux. For Linux, you should also note the distribution (distro) because it may make a difference in the installation format.
- Automated or manual install: Whether the installation will take place using an installer. If the JDK doesn’t use an installer, this field should also note the location in which the JDK should be manually unpacked.
- JDK version: This field should also include the installed update level, such as JDK 8u202.
Older versions of Java are not uncommon. In Azul’s 2024 Oracle Usage, Pricing and Migration Survey & Report, 26% of participants use JDK 8 and 19% use JDK 6 or 7.
In addition to these basic fields, your Java inventory should also capture some edge cases that could complicate an otherwise straightforward process. They include older Java versions (before Java 8), JavaFX, Java Web Start, and IcedTea-Web. You can find other, less likely considerations, in OpenJDK Migration for Dummies.
At the end of this process, you should have a complete list of all places where the Oracle JDK is located. If you want additional fields, download an Inventory Worksheet Template from the OpenJDK Migration Hub on our website. If you have a large Java deployment, you’ll probably want additional resources to assist with the inventory.
How a Java inventory fits with the rest of your Java migration
Discovery is only the first of three critical steps in Azul’s proven methodology for migrating Oracle Java to an OpenJDK distribution. The three steps are:
- Discovery. Identify which versions of Java are being used by which applications and on which machines within your organization, including cloud instances. You’ll use this inventory to create a migration plan.
- Execution. For each machine that requires a Java runtime, install the same version (or versions) of the OpenJDK distribution you choose.
- Validation. Test your applications to verify that everything works as expected.
Learn more about migrating from Oracle Java to an OpenJDK distribution in OpenJDK Migration for Dummies, written by Azul CTO and Java Champion Simon Ritter.