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:
- Get the source code. OpenJDK only provides the code.
- Next, run the build process to prepare binaries.
- 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.
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.
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.
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.
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 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.
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.
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.
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.
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.
jvm aware newsletter
join the newsletter to receive the latest updates in your inbox.