Difference Between Openjdk and Adoptium/Adoptopenjdk

Difference between OpenJDK and Adoptium/AdoptOpenJDK

In short:

  • OpenJDK has multiple meanings and can refer to:
    • free and open source implementation of the Java Platform, Standard Edition (Java SE)
    • open source repository — the Java source code aka OpenJDK project
    • prebuilt OpenJDK binaries maintained by Oracle
    • prebuilt OpenJDK binaries maintained by the OpenJDK community
  • AdoptOpenJDK — prebuilt OpenJDK binaries maintained by community (open source licensed)

Explanation:

Prebuilt OpenJDK (or distribution) — binaries, built from https://hg.openjdk.java.net/, provided as an archive or installer, offered for various platforms, with a possible support contract.

OpenJDK, the source repository (also called OpenJDK project) - is a Mercurial-based open source repository, hosted at
https://hg.openjdk.java.net. The Java source code. The vast majority of Java features (from the VM and the core libraries to the compiler) are based solely on this source repository. Oracle have an alternate fork of this.

OpenJDK, the distribution (see the list of providers below) - is free as in beer and kind of free as in speech, but, you do not get to call Oracle if you have problems with it. There is no support contract. Furthermore, Oracle will only release updates to any OpenJDK (the distribution) version if that release is the most recent Java release, including LTS (long-term support) releases. The day Oracle releases OpenJDK (the distribution) version 12.0, even if there's a security issue with OpenJDK (the distribution) version 11.0, Oracle will not release an update for 11.0. Maintained solely by Oracle.

Some OpenJDK projects - such as OpenJDK 8 and OpenJDK 11 - are maintained by the OpenJDK community and provide releases for some OpenJDK versions for some platforms. The community members have taken responsibility for releasing fixes for security vulnerabilities in these OpenJDK versions.

AdoptOpenJDK, the distribution is very similar to Oracle's OpenJDK distribution (in that it is free, and it is a build produced by compiling the sources from the OpenJDK source repository). AdoptOpenJDK as an entity will not be backporting patches, i.e. there won't be an AdoptOpenJDK 'fork/version' that is materially different from upstream (except for some build script patches for things like Win32 support). Meaning, if members of the community (Oracle or others, but not AdoptOpenJDK as an entity) backport security fixes to updates of OpenJDK LTS versions, then AdoptOpenJDK will provide builds for those. Maintained by OpenJDK community.

OracleJDK - is yet another distribution. Starting with JDK12 there will be no free version of OracleJDK. Oracle's JDK distribution offering is intended for commercial support. You pay for this, but then you get to rely on Oracle for support. Unlike Oracle's OpenJDK offering, OracleJDK comes with longer support for LTS versions. As a developer you can get a free license for personal/development use only of this particular JDK, but that's mostly a red herring, as 'just the binary' is basically the same as the OpenJDK binary. I guess it means you can download security-patched versions of LTS JDKs from Oracle's websites as long as you promise not to use them commercially.

Note. It may be best to call the OpenJDK builds by Oracle the "Oracle OpenJDK builds".

Donald Smith, Java product manager at Oracle writes:

Ideally, we would simply refer to all Oracle JDK builds as the "Oracle JDK",
either under the GPL or the commercial license, depending on your
situation. However, for historical reasons, while the small remaining
differences exist, we will refer to them separately as Oracle’s
OpenJDK builds and the Oracle JDK.



OpenJDK Providers and Comparison




























































































































ProviderFree Builds
from Source
Free Binary
Distributions
Extended
Updates
Commercial
Support
Permissive
License
Website
AdoptOpenJDKYesYesYesNoYeshttps://adoptopenjdk.net
Amazon – CorrettoYesYesYesNoYeshttps://aws.amazon.com/corretto
Azul ZuluNoYesYesYesYeshttps://www.azul.com/downloads/zulu/
BellSoft LibericaNoYesYesYesYeshttps://bell-sw.com/java.html
IBMNoNoYesYesYeshttps://www.ibm.com/developerworks/java/jdk
jClarityNoNoYesYesYeshttps://www.jclarity.com/adoptopenjdk-support/
OpenJDKYesYesYesNoYeshttps://adoptopenjdk.net/upstream.html
Oracle JDKNoYesNo**YesNohttps://www.oracle.com/technetwork/java/javase/downloads
Oracle OpenJDKYesYesNoNoYeshttps://jdk.java.net
ojdkbuildYesYesNoNoYeshttps://github.com/ojdkbuild/ojdkbuild
RedHatYesYesYesYesYeshttps://developers.redhat.com/products/openjdk/overview
SapMachineYesYesYesYesYeshttps://sap.github.io/SapMachine

Is OpenJDK 11 or AdoptOpenJDK same stable like Oracle JDK

Update 2021-09

  • For versions 8 through 16, Oracle required a fee if their own Oracle JDK product was used in production, but not for dev, test, and training usages.
  • For Java 17, the Oracle JDK product is available under a new
    No-Fee Terms and Conditions license, discussed on the Oracle
    company blog.

On my first reading, it appears this new license makes production use free-of-cost (along with dev, test, and training usages), except for products sold for a fee while bundling the Oracle JDK product. But I am not an attorney, so read the terms yourself and consult legal advice as needed.

Keep in mind that many other vendors continue to provide implementations of the Java specs, as shown in the flowchart below. Some of these vendors sell support plans, either optionally or as a requirement for use of their product. Never assume, always read the detailed requirements for any distribution you obtain.

Another 2021 update: Add Microsoft to the list of vendors seen below.



tl;dr

Oracle and Adoptium (formerly AdoptOpenJDK) are but two of several vendors offering builds and installers.

All of the implementations of Java available today are based entirely or substantially on the source code provided by the OpenJDK project. All of them should show the same compatibility, stability, and functionality promised by the Java platform specifications.

You have a choice of several vendors offering one or more implementations of the Java platform. Some of those require payment of a fee in some situations, and some are free-of-charge. All are high-quality and frequently updated, per their support and end-of-life policies.

There is no one best vendor or product; choose according to your needs.

Details

OpenJDK is a project hosting an open-source implementation of the Java platform specifications. This project is run by Oracle, IBM, Apple, Red Hat, Azul Systems, SAP, and others. This project offers only source-code, not complete builds nor convenient installers.

Many vendors provide builds based on OpenJDK. Most are direct builds with little or no added value, though vendors have the right to include fixes or features as long as they abide by licensing terms.

Oracle is one such vendor. Oracle offers three products:

  • Oracle JDK for their paying customers (and free-of-cost for others doing developing & testing, but not deployment)
  • jdk.java.net, builds of OpenJDK, based directly and entirely on OpenJDK source code, no added value. Provided free-of-cost and unsupported.
  • GraalVM, a very special Java implementation, with editions either free-of-cost or fee-based.

Oracle has declared their intention to keep Oracle JDK at feature-parity with OpenJDK. They even went so far as to donate some of their commercial products such as Mission Control and Flight Recorder to the OpenJDK project. So you should expect the same stability, speed, and features — except that Oracle reserves the right to more quickly ship patched versions of their supported product to their paying customers when warranted. Submitting to OpenJDK and getting a release there may take more time.

Oracle is not the only vendor producing builds of Java with and without paid support options. Some individual companies provide builds with and/or without paid support. And key members of the Java community have combined their efforts, founding the Adoptium project, formerly known as AdoptOpenJDK.net, and now housed at the Eclipse Foundation. This project hosts infrastructure for building and testing OpenJDK builds for a variety of hardware and OS platforms, some of which offer a choice between the HotSpot and OpenJ9 JVMs. See Difference between OpenJDK and AdoptOpenJDK.

Here is a flowchart I made that may assist you in choosing a vendor for a Java implementation.

Flowchart guiding you in choosing a vendor for a Java 11 implementation

There are no wrong choices here. As far as I know, all of these vendors do a solid job of building, publishing, and updating their releases. But here are a few considerations that might lead you to a particular vendor.

Motivations in choosing a vendor for Java

Technical difference between AdoptOpenJDK and Red Hat OpenJDK for Windows

Red Hat provides OpenJDK 8 Windows binaries under exactly the same license as AdoptOpenJDK and any other open-source OpenJDK 8 build - under the GNU GPL v. 2 with classpath exception. All the restrictions about the "development use" are related only to the subscription (support) that can be purchased from Red Hat.

Technical differences between Red Hat OpenJDK 8 for Windows and other mentioned builds are pretty minor, as all these builds pass TCK. Generally Red Hat builds are trying to stay as close as possible in behaviour to OpenJDK 8 package that is included in RHEL and CentOS.

Differences:

  1. RH OpenJDK 8 build is done from the sources of OpenJDK RPM package that is used on RHEL/CentOS. These sources are generally very close to upstream sources, but contain some changes (see points below) and may include some bugfixes (RPM patches) ahead of time. RHEL/CentOS changes can be tracked in a publicly-available repo for CentOS RPM

  2. RH OpenJDK 8 includes Shenandoah garbage collector

  3. RH OpenJDK 8 uses sources from RHEL/CentOS for dependency libraries (zlib, giflib, libjpeg-turbo, libpng, nss (nss is not used anymore)) instead of the (partial) sources of these libraries that are included in-tree in upstream jdk sources

  4. Elliptic Crypto implementation in RH OpenJDK 8 includes only 3 most popular elliptic curves - NIST P-256, NIST P-384 and NIST P-521.

  5. RH OpenJDK 8 uses the set of root CA certificates from RHEL/CentOS

  6. RH OpenJDK 8 may use slightly newer timezone data - it is taken from RHEL/CentOS

  7. RH OpenJDK 8 includes all Java sources code inside the src.zip file (that is used by IDEs to allow browsing jdk code), in upstream build substantial part of these sources is not included

  8. RH OpenJDK 8 does not include demos and samples

  9. RH OpenJDK 8 includes a set of font files

  10. all native binaries in RH OpenJDK 8 are signed by RH certificate

  11. RH OpenJDK 8 installer includes a JavaFX implementation

  12. RH OpenJDK 8 installer includes a WebStart implementation

Source: I work on OpenJDK Windows builds at RH.

What is the difference between IBM Semeru and Adoptium

There's some discussion of the difference between the two from IBM over in https://github.com/docker-library/official-images/pull/10666#issuecomment-894204729:

Eclipse Temurin delivers OpenJDK + Hotspot images, and IBM Semeru Runtimes going forward will deliver both Open and Certified (JCKed) versions of OpenJDK + Eclipse OpenJ9 images.

It is a confusing story and transition, I will try to add a bit of background.
AdoptOpenJDK up until now was producing OpenJDK binaries with both Hotspot and OpenJ9 VM's. With Adopt's move to Eclipse, legal restrictions prevent the new Eclipse Adoptium group from producing/releasing OpenJ9 based binaries. As a result, IBM will be producing OpenJ9 based binaries in 2 flavours, Open and Certified, both under the family name IBM Semeru Runtimes. Essentially the same binaries, released under different licenses.

So I suppose what you'll want to be looking for is comparisons between Hotspot and OpenJ9 (and I imagine any speed differences between those would be somewhat workload dependent, but there are quite a few articles online that have done actual benchmarks, such as https://www.ojalgo.org/2019/02/quick-test-to-compare-hotspot-and-openj9/).

Isn't AdoptOpenJDK using (the JVM of) OpenJDK?

Update: AdoptOpenJDK has changed its name to Adoptium, as part of its move to the Eclipse Foundation.


OpenJDK provides complete source code for a full implementation of the Java Platform as defined in the Java Specifications, JSRs, and JEPs. An implementation of the Java platform includes many things, among them:

  • A Java programming language compiler to create .class Java bytecode files from your .java source code files.
  • A Java Virtual Machine (JVM) that can, at runtime, interpret and/or compile those Java bytecode files, turning them into executable code that can run on the host computer’s cores using the native instruction set of that CPU.
  • A runtime environment that connects Java apps with the host machine’s resources such as file system and network facility.
  • A required set of Java class libraries (java.util, java.time, etc.).

An implementation of Java has the option of providing a Just-In-Time (JIT) compiler/optimizer as part of the JVM. The OpenJDK project includes source code for the HotSpot JIT.

People providing builds or installers for the Java Platform are free to use HotSpot or to choose another JIT compiler technology. OpenJ9 in one such alternative JIT, developed at IBM, now open-sourced through the Eclipse Foundation, and provided free-of-charge. In the past, another alternative JIT was JRockit, owned by Oracle. Parts of JRockit have been merged into the current version of HotSpot.

Diagram showing the evolution of JIT options in the JVM, with older HotSpot merging with JRockit to produce modern OpenJDK HotSpot, and the alternative J9 being open-sourced as OpenJ9.

The AdoptOpenJDK project offers you choice of either the HotSpot engine provided by Oracle via the OpenJDK project or the alternative OpenJ9 engine provided by the Eclipse Foundation.

With either choice you get the same class libraries from OpenJDK codebase, the same tools including Mission Control and Flight Recorder from OpenJDK, and the same utilities from OpenJDK. Only the JIT/JVM is different whether you choose HotSpot or OpenJ9.

Screenshot of download page at AdoptOpenJDK offering you a choice either HotSpot JIT or OpenJ9 JIT.

AdoptOpenJDK is only one of several vendors providing distributions of Java techonology as binaries/installers. Most of these are based mostly, if not entirely, on the OpenJDK project’s source code releases. Here is a flowchart showing you the various vendors.

Flowchart guiding you in choosing a vendor for a Java 11 implementation

And here is a list of possible motivations to consider in selecting a vendor.

Motivations in choosing a vendor for Java



Related Topics



Leave a reply



Submit