JDK - oracle build alternatives

In this post, we are exploring some battle-tested Oracle build alternatives based on the OpenJDK codebase.

Java language ecosystem can be viewed as a collection of Specifications, Specification requests, and Enhancement proposals. The specifications, when implemented, result in JDK, which is at the core of application development in the Java ecosystem.

Together with JVM and JRE, it allows end-to-end development ranging from small applications to large-scale enterprise applications. A standalone JDK setup includes a private JRE - a collection of JVM and other runtime libraries which allows us to compile, run and debug Java code.

To rephrase, we can say:

JDK = application development tools + application runtime environment

History of JDK builds

In 2018, when Oracle announced an updated release cycle for Java and updated their support cycle for non-LTS versions, vendors, developers and communities started exploring other options, including publishing their custom builds. On a very high level, a JDK build requires the following actions (not limited) to be performed:

  1. Get the source code. OpenJDK only provides the code.
  2. Next, run the build process to prepare binaries.
  3. Finally, get it certified by JCP for Technology Compatibility Kit certification (TCK).

Once awarded with TCK, the build is termed Java SE compatible. However, this cannot be labeled as Java SE without getting a commercial license from Oracle. Most vendor builds are produced on top of the OpenJDK code base, with modifications to remove the proprietary components or add features supporting a specific use case.

Available Options

In the next section, we’ll see a few of the available options that we can choose from. The list is not exhaustive and only contains a few of the most common ones. One can refer to the InfoQ post that highlights some points we should consider while selecting our next JDK.

Oracle JDK

Previously known as Sun JDK, Oracle’s commercial offering includes a licensed version of the JDK and is targeted more towards enterprise customers. Before Java8, it used to run on JRockit virtual machine but now uses HotSpot JVM only.

There is no public information available on the license costs, and one has to contact Oracle sales to get relevant details.

Open JDK

Both OracleJDK and OpenJDK are developed and maintained by Oracle. It is an open-source implementation of the Java Standard Edition platform with Oracle and the open Java community contributions. OpenJDK is released under license GPL v2 (with classpath exception), wherein Oracle JDK is licensed under Oracle Binary Code License Agreement.

As mentioned here, the underlying code for both OracleJDK and OpenJDK is almost identical except for some propriety components or third-party closed source components.

AdoptOpenJDK

Now maintained by Eclipse Foundation and re-branded as Adoptium, the AdoptOpenJDK provides free binaries under GPLv2+CE  license. It has the same source code as OpenJDK and is TCK certified.

The AdoptOpenJDK comes in two different VM flavors: HotSpot and OpenJ9. Unfortunately, the transition to Eclipse Foundation caused impacts on OpenJ9 builds (previously maintained by Eclipse Foundation), and now those are supported by IBM semeru.

Red Hat OpenJDK Build

Red Hat distributes OpenJDK builds under the following licenses with frequent release cycles:

  • Red Hat Enterprise Linux
  • Red Hat Runtimes
  • Red Hat Middleware
  • Red Hat build of OpenJDK for Windows (for all non-Red Hat Middleware Java workloads)

They are regular contributors (second largest after Oracle) to the OpenJDK platform and have supported major versions for at least six years.

Microsoft

2021 saw another vendor releasing their custom build with long-term support, and this time its none other than Microsoft. They released OpenJDK-based builds for the general public to use under the GPLv2+CE license. The latest version is available f0r download in Java16, and as per the official announcement, Java17 will be available by year-end.

Azul Zulu

Zulu is an OpenJDK version with the community and commercial offerings (as part of the enterprise core and prime platforms). For commercial licenses, they provide competitive pricing as well.

Amazon Corretto

Amazon Corretto is a no-cost, multiplatform, production-ready distribution of the OpenJDK. Corretto comes with long-term support that will include performance enhancements and security fixes. Amazon runs Corretto internally on thousands of production services, and Corretto is certified as compatible with the Java SE standard.

Distributed under GPLv2 with CPE, it contains patches included by Amazon that are not yet integrated into the corresponding OpenJDK update projects.

Dragonwell

Alibaba Dragonwell, as a downstream version of OpenJDK, is the in-house OpenJDK implementation at Alibaba. It is optimized for online e-commerce, financial, and logistics applications.

SapMachine

SapMachine is an OpenJDK build optimized to run the NetWeaverapplication stack. They regularly contribute to the OpenJDK platform, and the build is available GNU v2 license.

Liberica

Liberica is another OpenJDK variant from BellSoft which is fully TCK compliant. As per the official statement, Liberica JDK for macOS is a notarized product, which means you can refer to it when developing your applications on this platform.

This comes with both free and paid subscription plans that one can choose based on their requirements. In addition, BellSoft provides regular security patches for current and LTS versions for various known vulnerabilities.

Together with VMware, they provide end-to-end solutions for SpringBoot applications that offer reduced startup time and low memory consumption.


That is all for this post. If you want to share any feedback, please drop me an email, or contact me on any social platforms. I’ll try to respond at the earliest. Also, please consider subscribing for regular updates.

Be notified of new posts. Subscribe to the RSS feed.