- OpenJDK is an open-source, free implementation of Oracleâs Java programming environment.
- OpenJDK began as an open-source implementation of Java developed by Sun Microsystems in 2006.
- The primary advantage of using OpenJDK over Java SE is the permissive software license associated with most OpenJDK builds.
Open Java Development Kit (OpenJDK) is an open-source, free implementation of Oracle’s Java programming environment. Sun Microsystems began its development in 2006, and it is the official reference implementation of Java SE in modern usage. Let’s examine OpenJDK’s history and best use cases.
History of OpenJDK
OpenJDK began as an open-source implementation of Java developed by Sun Microsystems in 2006. Java’s popularity caused a boom in the need for Java environments, and many institutions needed a low-cost way to implement Java for various reasons. So, Sun Microsystems released OpenJDK, which made the source code for Java’s codebase and environment free under the GPL.
OpenJDK’s initial release included the Java virtual machine, Hotspot, and the javac compiler. Including these two components in the package meant that developers using OpenJDK could do everything that paid users of Oracle JDK could for free.
The project was extremely well-received, and developers began implementing it immediately. OpenJDK also saw an uptick in people modifying and improving the codebase. Many of these user improvements would become part of Oracle’s official release code in the future.
Oracle develops both OpenJDK and Oracle JDK. While the two software environments are similar, they have critical differences that users should consider when deciding which one to use for their projects.
Differences Between OpenJDK and Oracle JDK
While Oracle develops both OpenJDK and Oracle JDK, they are different entities. Users should choose their development environment carefully to select the one that best suits their project. Let’s examine the primary differences between OpenJDK and Oracle JDK.
Oracle delivers long-term support (LTS) for Oracle JDK, meaning Oracle will continue to support a stable release of the previous versions of Oracle JDK even after releasing the newest version. OpenJDK does not receive LTS from Oracle. Once Oracle releases a new version of OpenJDK, the previous versions stop receiving updates and technical support from Oracle.
Not all releases of the JDK have long-term support. The current versions receiving long-term support are 11, 17, 18, and 21. Additionally, Oracle continues to support Java 8, releasing new updates for development with no defined end-of-life date. Oracle has promised to give at least 18 months of notice before discontinuing this service.
Oracle releases a new JDK every six months, in March and September of each year. The most recent JDK is Java 21, released September 2023.
The two versions of the JDK use different licenses. Oracle JDK uses the Oracle Binary Code License Agreement, while OpenJDK uses the GNU General Public License 2.0 with the Classpath linking exception.
The two implementations have mostly the same functionality. However, they do have some unique features that distinguish them from each other. Oracle JDK has better garbage collection functionality and renderers. It also includes Java Mission Control, Fight Recorder, and Application Class-Data Sharing. Meanwhile, OpenJDK has the Font Renderer.
There are no functional differences between OpenJDK and Oracle JDK since Oracle bases the Oracle JDK builds on OpenJDK’s release reports. You should not experience a significant performance difference between OpenJDK and Oracle JDK.
What Are the Different Builds of OpenJDK?
OpenJDK has many different builds. Different teams maintain each build of OpenJDK, giving them different features and additional libraries. Let’s look at the different versions of OpenJDK you can choose from.
Many groups used to manage AdoptOpenJDK, now known as Eclipse Temurin. It’s an OpenJDK build with long-term support, a permissive license, is Technology Compatibility Kit (TCK) tested, and has optional commercial support from IBM.
Dragonwell is an OpenJDK build from Alibaba. It has long-term support and a permissive license but it isn’t TCK tested and lacks commercial support.
Amazon’s Corretto JDK is an OpenJDK build with long-term support, a permissive license, it is TCK tested, and has optional commercial support through Amazon Web Services.
Zulu is Azul’s OpenJDK build. It has long-term support, a permissive license, is TCK tested, and has optional commercial support.
BellSoft Liberica JDK
Liberica JDK is BellSoft’s OpenJDK build. It has long-term support, a permissive license, is TCK tested, and has optional commercial support.
Formerly known as AdoptOpenJDK, Adoptium develops the Eclipse Temurin OpenJDK build. It has long-term support, a permissive license, is TCK tested, and has optional commercial support through Azul, IBM, and Red Hat.
IBM Java SDK
This is a depreciated JDK build by IBM. It had long-term support, was TCK tested, and had optional commercial support. However, it lacked a permissive license.
IBM Semeru Runtime Certified Edition
This is IBM’s proprietary JDK build. It has long-term support, was TCK tested, and has optional commercial support through IBM. However, like the original Java SDK by IBM, it lacks a permissive license.
IBM Semeru Runtime Open Edition
IBM Semeru Runtime Open Edition is IBM’s open-usage JDK build. It has long-term support, a permissive license, and optional commercial support through IBM. However, this build lacks the TCK testing from the Certified Edition.
Developed and maintained by JetBrains, the JetBrains Runtime is an OpenJDK build with long-term support and a permissive license. However, it is not TCK tested and has no commercial support.
Microsoft Build of OpenJDK
Microsoft developed and continues to maintain its own build of OpenJDK with a very straightforward name. It has long-term support, a permissive license, is TCK tested, and has commercial support through Microsoft when using Azure.
ojdkbuild is a now-discontinued OpenJDK build that several groups maintained. It has long-term support and a permissive license. However, it does not feature TCK testing or commercial support through any entity.
OpenLogic’s OpenJDK build features long-term support, a permissive license, and optional commercial support. However, this build isn’t TCK tested.
GraalVM Community Edition
GraalVM’s Community Edition is their proprietary OpenJDK build. It has a permissive license and is TCK-tested. However, it does not promise long-term support and has no commercial support options.
Oracle GraalVM Enterprise Edition
GraalVM Enterprise Edition is maintained by Oracle, presenting another option for OpenJDK builds. It has long-term support, is TCK tested, and has optional commercial support. However, it lacks a permissive license.
Oracle Java SE
Oracle also manages the Java SE build, which Oracle develops based on OpenJDK. Java SE features long-term support (depending on version,) TCK testing, and commercial support. However, it lacks a permissive license.
Oracle’s OpenJDK build is the “official” build and serves as a reference implementation for Java. It has a permissive license and is TCK-tested. However, Oracle’s OpenJDK does not have long-term or commercial support.
Red Hat Build of OpenJDK
Red Hat has its own build of OpenJDK with a very straightforward name. It has long-term support, a permissive license, is TCK tested, and offers commercial support.
SapMachine is SAP’s OpenJDK build. It has long-term support, a permissive license, is TCK tested, and offers commercial support for SAP products.
Tencent develops and manages KonaJDK, its OpenJDK build. It has long-term support, a permissive license, is TCK tested, and offers optional commercial support.
Advantages of OpenJDK vs. Java SE
The primary advantage of using OpenJDK over Java SE is the permissive software license associated with most OpenJDK builds. Not all possible builds have permissive licenses. However, many do, making them ideal for companies that intend to distribute their program.
What Is a Permissive Software License?
Permissive software licenses are sometimes called BSD-like licenses or BSD-style licenses. These licenses are precisely what they say on the tin: open-source software licenses with heavily permissive, non-restrictive rulesets surrounding the use, modification, and distribution of the source software. The other type of open-source software license, copyleft licenses, are more restrictive.
Software licensed with a permissive license can typically be modified, updated, copied, added to, or subtracted from without any legal obligation to share the details of these changes. With a copyleft license, you may need to publish your company’s research when modifying the source software.
If you want to modify the code in the JDK and add new features without publishing those changes, you’ll want to choose one with a permissive license. If you’re okay with publishing your company’s proprietary modifications to the JDK, there’s no functional difference in the licensing.
Which OpenJDK Builds Have Permissive Software Licenses?
The following OpenJDK builds feature permissive licenses:
- Alibaba Dragonwell
- Amazon Corretto
- Azul Zulu
- BellSoft Liberica JDK
- Eclipse Temurin
- IBM Semeru Runtime Open Edition
- JetBrains Runtime
- Microsoft build of OpenJDK
- OpenLogic OpenJDK
- GraalVM Community Edition
- Oracle OpenJDK
- Red Hat build of OpenJDK
- SAP SapMachine
- Tencent KonaJDK
What Projects Are Based on OpenJDK?
A few significant projects based on this platform, namely OpenJFX and Apache OpenWebBeans, exist on the market.
What Is OpenJFX?
OpenJFX (formerly known as JavaFX) is a cross-platform graphical user interface (GUI) for creating Java-based applications. Like the platform that Oracle develops it on, OpenJFX is a fully open-source project using the Java programming language.
The suite features cohesive user interface controls for users to create their applications. The UI options are modern and visually appealing, allowing users to propel their creations into the current market. There are UI options for every platform, mobile, desktop, and embedded systems, with a native-built feel for that platform.
You don’t have to use the UI builder either. There is a declarative layout where you can describe your UI as code, which is excellent for creating complex UIs that don’t take well to GUI interfacing. You can also use modern Java features with OpenJFX. Large applications can capitalize on OpenJFX’s scalability, as well.
Apache built OpenWebBeans. It is a context and dependency injector (CDI) for Java EE. Dependency injection is a process by which the developer passes software dependencies to objects and functions within the code without creating them from scratch.
OpenWebBeans and programs like it address the issue of separating the processes of constructing and using objects, which can lead to loosely coupled programs.
OpenJDK is an open-source programming environment developed by Oracle. However, many other companies have created their own builds of the programming environment. Each of these builds has unique features, allowing users to choose the one that most closely aligns with their needs.
The image featured at the top of this post is ©iStock.com/Buffik.