Adding some context

Frequently Asked Questions


Which JDK Do You Recommend?


This comparison aims to give you an overview of what JDKs are available and help you narrow your choices.

If you are looking for an opinionated guide, other sites offer that, for example,

Is the JDK That Ticks All the Boxes the Best?


More precisely, it might be the best, but not because it ticks all the boxes.

The primary reason is that ticked boxes (or full circles, as they are currently displayed) indicate presence, not quality.

How Do I Find the Best JDK for Me?

  1. Jot down your requirements.
  2. Create a shortlist with the help of the comparison table.
  3. Examine each entry on the shortlist.
  4. Pick the one that fits your requirements best.

Examining each entry on the shortlist should include the following tasks:

  • Try each JDK and all the functionality you need, at least on your machine and in your test environment.
  • Watch whether you receive updates in time and whether the quality is acceptable.
  • If you require specific functionality (for example, a garbage collector) on an older JDK, ask the vendor whether they maintain that functionality or at least backport patches. Areas notorious for widely varying levels of support are garbage collectors, platform support (especially anything beyond x86, 64-bit, and ARM, 64-bit), and functionality like JavaFX or Web Start that has been removed from OpenJDK.
  • If you require support, talk to the vendor about their offering and ask them to walk you through how they would handle a specific issue you had in the past.

What JDKs Do You Plan on Adding? Why Are Some Missing?

The plan is to include all JDKs that are intended for production use and target a broader audience. Therefore, builds that are supposed to facilitate the development of a JDK or are primarily used internally by a vendor will not make it on the list.

JDKs that we plan to add, sorted alphabetically:

JDKs that we do not plan on adding, sorted alphabetically:

  • AdoptOpenJDK: Renamed to Eclipse Temurin.
  • All JDKs included in Linux distributions: Those that are not already on the list like Amazon Corretto (in Amazon Linux) are no stand-alone products. Furthermore, they would bloat the comparison even more.
  • JetBrains Runtime: Serves as platform for JetBrains' IntelliJ-based IDE, only.
  • Red Hat Mandrel: Stripped down version of GraalVM Community Edition containing only the GraalVM Native Image builder. Its purpose is to support Quarkus.
  • OJDKBuild: Discontinued.
  • Trava OpenJDK: Seems to primarily target developers, and to be dormant.

JDKs we are not sure about, sorted alphabetically:

  • Axiom JDK: Looks like a rebrand of BellSoft Liberica JDK for the Russian market.
  • Huawei BiSheng: Unclear whether it is targeting an audience outside of Huawei.
  • Tencent Kona: Unclear whether it is targeting an audience outside of Tencent.

What Is the Meaning of the Licenses?

The row License in the section Licensing denotes the license under which the JDK can be used.

The most common license is the GNU General Public License Version 2 with Classpath Exception, or GPLv2+CE for short. The GPLv2 is the same license used by the Linux kernel and allows you to employ the JDK without usage restrictions in development and production. The FOSSA blog gives a good overview of the GPLv2. The Classpath Exception is a supplement to the GPLv2 and ensures that you can run any code without having to license it under the GPLv2 (see GPL Linking Exception for why this is necessary).

The GPLv2+CE is the most common JDK license because the OpenJDK source code is licensed under the GPLv2+CE.

Some vendors offer their JDKs under different license terms. The provisions vary between vendors and sometimes even between versions. The comparison subsumes these licenses under the label "Proprietary". Usually, a footnote provides additional information.

What Is the Difference Between the Update Types?

The comparison distinguishes between two types of updates that vendors publish quarterly for their JDKs: Critical Patch Update (CPU) and Patch Set Update (PSU). Oracle introduced those terms and uses them across their product lines. Some other vendors have adopted these terms. Others do not use them at all.

Patch Set Updates are the norm: They contain all security patches in addition to other bug fixes and enhancements that have been applied since the last quarterly PSU.

Critical Patch Updates are only published by a subset of vendors. They contain only security patches and critical bug fixes that have been applied on top of the last quarterly PSU.

However, the exact definition may vary from vendor to vendor.

Possible values in the comparison table and their meaning:

  • no: The vendor does not publish the type of update.
  • free: The type of update is available free of charge.
  • paid: The type of update is only available to paying customers.
  • tiered: The availability of the type of update is somehow tiered. For example, it can be free of charge for a certain period after the initial release of the JDK. Further updates will only be made available to paying customers.
  • unknown: There is not enough information to assign any of the other values.

Where Can I Learn More about Differences Between Versions?

The comparison does not include language-level differences between versions because there are no language-level differences between vendors.

For a great overview of language-level differences between versions, see The Java Version Almanac. Furthermore, the list of JDK Enhancement Proposals (JEP) details both language-level differences and technological changes like ports or garbage collectors.

What Are My Options If I Need JavaFX?

JavaFX is a GUI toolkit that was part of Oracle JDK until version 10. Since then, it has been unbundled from the JDK. The development has moved to the OpenJFX project

OpenJFX is available as a separate download. Application developers should ship OpenJFX as part of their application and no longer rely on it being part of the JDK. Gluon provides dedicated support for OpenJFX (see JavaFX Long-Term Support).

For compatibility reasons, some vendors offer newer or even the latest JDK bundled with OpenJFX. Those are mentioned in the comparison table under CustomisationsEditions.

What Are My Options If I Need Java Web Start?

Java Web Start allows downloading and starting Java applications directly from the internet using JNLP files. It was part of Oracle JDK until version 10. The last maintained JDK containing Java Web Start is Oracle JDK 8. See Oracle's Java Client Roadmap Update for details.

Users that rely on JNLP but require a newer JDK have some options. There is an open-source reimplementation of Web Start called IcedTea-Web. It claims to be largely compatible with Web Start and should work with newer JDKs.