Partner – Orkes – NPI EA (cat=Spring)
announcement - icon

Modern software architecture is often broken. Slow delivery leads to missed opportunities, innovation is stalled due to architectural complexities, and engineering resources are exceedingly expensive.

Orkes is the leading workflow orchestration platform built to enable teams to transform the way they develop, connect, and deploy applications, microservices, AI agents, and more.

With Orkes Conductor managed through Orkes Cloud, developers can focus on building mission critical applications without worrying about infrastructure maintenance to meet goals and, simply put, taking new products live faster and reducing total cost of ownership.

Try a 14-Day Free Trial of Orkes Conductor today.

Partner – Orkes – NPI EA (tag=Microservices)
announcement - icon

Modern software architecture is often broken. Slow delivery leads to missed opportunities, innovation is stalled due to architectural complexities, and engineering resources are exceedingly expensive.

Orkes is the leading workflow orchestration platform built to enable teams to transform the way they develop, connect, and deploy applications, microservices, AI agents, and more.

With Orkes Conductor managed through Orkes Cloud, developers can focus on building mission critical applications without worrying about infrastructure maintenance to meet goals and, simply put, taking new products live faster and reducing total cost of ownership.

Try a 14-Day Free Trial of Orkes Conductor today.

eBook – Guide Spring Cloud – NPI EA (cat=Spring Cloud)
announcement - icon

Let's get started with a Microservice Architecture with Spring Cloud:

>> Join Pro and download the eBook

eBook – Mockito – NPI EA (tag = Mockito)
announcement - icon

Mocking is an essential part of unit testing, and the Mockito library makes it easy to write clean and intuitive unit tests for your Java code.

Get started with mocking and improve your application tests using our Mockito guide:

Download the eBook

eBook – Java Concurrency – NPI EA (cat=Java Concurrency)
announcement - icon

Handling concurrency in an application can be a tricky process with many potential pitfalls. A solid grasp of the fundamentals will go a long way to help minimize these issues.

Get started with understanding multi-threaded applications with our Java Concurrency guide:

>> Download the eBook

eBook – Reactive – NPI EA (cat=Reactive)
announcement - icon

Spring 5 added support for reactive programming with the Spring WebFlux module, which has been improved upon ever since. Get started with the Reactor project basics and reactive programming in Spring Boot:

>> Join Pro and download the eBook

eBook – Java Streams – NPI EA (cat=Java Streams)
announcement - icon

Since its introduction in Java 8, the Stream API has become a staple of Java development. The basic operations like iterating, filtering, mapping sequences of elements are deceptively simple to use.

But these can also be overused and fall into some common pitfalls.

To get a better understanding on how Streams work and how to combine them with other language features, check out our guide to Java Streams:

>> Join Pro and download the eBook

eBook – Jackson – NPI EA (cat=Jackson)
announcement - icon

Do JSON right with Jackson

Download the E-book

eBook – HTTP Client – NPI EA (cat=Http Client-Side)
announcement - icon

Get the most out of the Apache HTTP Client

Download the E-book

eBook – Maven – NPI EA (cat = Maven)
announcement - icon

Get Started with Apache Maven:

Download the E-book

eBook – Persistence – NPI EA (cat=Persistence)
announcement - icon

Working on getting your persistence layer right with Spring?

Explore the eBook

eBook – RwS – NPI EA (cat=Spring MVC)
announcement - icon

Building a REST API with Spring?

Download the E-book

Course – LS – NPI EA (cat=Jackson)
announcement - icon

Get started with Spring and Spring Boot, through the Learn Spring course:

>> LEARN SPRING
Course – RWSB – NPI EA (cat=REST)
announcement - icon

Explore Spring Boot 3 and Spring 6 in-depth through building a full REST API with the framework:

>> The New “REST With Spring Boot”

Course – LSS – NPI EA (cat=Spring Security)
announcement - icon

Yes, Spring Security can be complex, from the more advanced functionality within the Core to the deep OAuth support in the framework.

I built the security material as two full courses - Core and OAuth, to get practical with these more complex scenarios. We explore when and how to use each feature and code through it on the backing project.

You can explore the course here:

>> Learn Spring Security

Partner – LambdaTest – NPI EA (cat=Testing)
announcement - icon

Browser testing is essential if you have a website or web applications that users interact with. Manual testing can be very helpful to an extent, but given the multiple browsers available, not to mention versions and operating system, testing everything manually becomes time-consuming and repetitive.

To help automate this process, Selenium is a popular choice for developers, as an open-source tool with a large and active community. What's more, we can further scale our automation testing by running on theLambdaTest cloud-based testing platform.

Read more through our step-by-step tutorial on how to set up Selenium tests with Java and run them on LambdaTest:

>> Automated Browser Testing With Selenium

Partner – Orkes – NPI EA (cat=Java)
announcement - icon

Modern software architecture is often broken. Slow delivery leads to missed opportunities, innovation is stalled due to architectural complexities, and engineering resources are exceedingly expensive.

Orkes is the leading workflow orchestration platform built to enable teams to transform the way they develop, connect, and deploy applications, microservices, AI agents, and more.

With Orkes Conductor managed through Orkes Cloud, developers can focus on building mission critical applications without worrying about infrastructure maintenance to meet goals and, simply put, taking new products live faster and reducing total cost of ownership.

Try a 14-Day Free Trial of Orkes Conductor today.

Course – LSD – NPI EA (tag=Spring Data JPA)
announcement - icon

Spring Data JPA is a great way to handle the complexity of JPA with the powerful simplicity of Spring Boot.

Get started with Spring Data JPA through the guided reference course:

>> CHECK OUT THE COURSE

Partner – Moderne – NPI EA (cat=Spring Boot)
announcement - icon

Refactor Java code safely — and automatically — with OpenRewrite.

Refactoring big codebases by hand is slow, risky, and easy to put off. That’s where OpenRewrite comes in. The open-source framework for large-scale, automated code transformations helps teams modernize safely and consistently.

Each month, the creators and maintainers of OpenRewrite at Moderne run live, hands-on training sessions — one for newcomers and one for experienced users. You’ll see how recipes work, how to apply them across projects, and how to modernize code with confidence.

Join the next session, bring your questions, and learn how to automate the kind of work that usually eats your sprint time.

1. Introduction

In this tutorial, we’ll explore the differences between Oracle Java Development Kit and OpenJDK. First, we’ll take a closer look at each of them, and then we’ll compare them. Finally, we’ll list other JDK implementations.

2. Oracle JDK and Java SE History

JDK (Java Development Kit) is a software development environment used in Java platform programming. It contains a complete Java Runtime Environment, a so-called private runtime. It’s thus named because it contains more tools than the standalone JRE, as well as the other components needed for developing Java applications.

Oracle strongly recommends using the term JDK to refer to the Java SE (Standard Edition) Development Kit (there are also Enterprise Edition and Micro Edition platforms).

Let’s take a look at the Java SE history:

  • JDK Beta – 1995
  • JDK 1.0 – January 1996
  • JDK 1.1 – February 1997
  • J2SE 1.2 – December 1998
  • J2SE 1.3 – May 2000
  • J2SE 1.4 – February 2002
  • J2SE 5.0 – September 2004
  • Java SE 6 – December 2006
  • Java SE 7 – July 2011
  • Java SE 8 (LTS) – March 2014
  • Java SE 9 – September 2017
  • Java SE 10 (18.3) – March 2018
  • Java SE 11 (18.9 LTS) – September 2018
  • Java SE 12 (19.3) – March 2019
  • Java SE 13 – September 2019
  • Java SE 14 – March 2020
  • Java SE 15 – September 2020
  • Java SE 16 – March 2021
  • Java SE 17 (LTS) – September 2021
  • Java SE 18 – March 2022
  • Java SE 19 – September 2022
  • Java SE 20 – March 2023
  • Java SE 21 (LTS) – September 2023

Note: the versions in italics are no longer supported.

We can see that the major releases of Java SE came approximately every two years until Java SE 7. It took five years to move from Java SE 6, and another three after that to reach Java SE 8.

Since Java SE 10, we’ve come to expect new releases every six months. However, not all releases will be the Long-Term-Support (LTS) releases. As a result of Oracle’s release plan, the LTS product releases will only happen every three years.

Java SE 17 is the latest LTS version, and Java SE 8 received free public updates until December 2020 for non-commercial usage.

This development kit got its current name after Oracle bought Sun Microsystems in 2010. Before that, the name was SUN JDK, and it was the official implementation of the Java programming language.

3. OpenJDK

OpenJDK is a free and open-source implementation of the Java SE Platform Edition. It was initially released in 2007 as the result of the development that Sun Microsystems started in 2006.

We should emphasize that OpenJDK is an official reference implementation of a Java Standard Edition since version SE 7.

Initially, it was based only on the JDK 7, but since Java 10, the open-source reference implementation of the Java SE platform is the responsibility of the JDK Project. And, just like for Oracle, the JDK Project will also deliver new feature releases every six months.

We should note that before this long-running project, there were JDK Release Projects that released one feature and were then discontinued.

Now let’s check out the OpenJDK versions:

  • OpenJDK 6 project – based on JDK 7, but modified to provide an open-source version of Java 6
  • OpenJDK 7 project – 28 July 2011
  • OpenJDK 7u project – this project develops updates to Java Development Kit 7
  • OpenJDK 8 project – 18 March 2014
  • OpenJDK 8u project – this project develops updates to Java Development Kit 8
  • OpenJDK 9 project – 21 September 2017
  • JDK project release 10 – 20 March 2018
  • JDK project release 11 – 25 September 2018
  • JDK project release 12 – Stabilization phase

4. Oracle JDK vs. OpenJDK

In this section, we’ll focus on the key differences between Oracle JDK and OpenJDK.

4.1. Release Schedule

As we mentioned, Oracle will deliver releases every three years, while OpenJDK will be released every six months.

Oracle provides long term support for its releases. On the other hand, OpenJDK only supports the changes to a release until the next version is released.

4.2. Licenses

Oracle JDK was licensed under the Oracle Binary Code License Agreement, whereas OpenJDK has the GNU General Public License (GNU GPL) version 2 with a linking exception.

There are some licensing implications when using Oracle’s platform. Public updates for Oracle Java SE 8 released after January 2019 won’t be available for business, commercial, or production use without a commercial license, as Oracle announced. However, OpenJDK is completely open source and can be used freely.

4.3. Performance

There’s no real technical difference between the two, since the build process for Oracle JDK is based on that of OpenJDK.

When it comes to performance, Oracle’s is much better regarding responsiveness and JVM performance. It puts more focus on stability because of the importance it gives to its enterprise customers.

OpenJDK, in contrast, delivers releases more often. As a result, we can encounter problems with instability. Based on community feedback, we know some OpenJDK users have encountered performance issues.

4.4. Features

If we compare features and options, we’ll see that the Oracle product has Flight Recorder, Java Mission Control, and Application Class-Data Sharing features, while OpenJDK has the Font Renderer feature.

Also, Oracle has more Garbage Collection options and better renderers.

4.5. Development and Popularity

Oracle JDK is fully developed by the Oracle Corporation, whereas OpenJDK is developed by Oracle, OpenJDK, and the Java Community. However, top-notch companies like Red Hat, Azul Systems, IBM, Apple Inc., and SAP AG also take an active part in its development.

As we can see from the link in the previous subsection, when it comes to popularity with the top companies that use Java Development Kits in their tools, such as Android Studio or IntelliJ IDEA, Oracle JDK used to be the more preferred, but both of those companies have switched to the OpenJDK based JetBrains builds.

Furthermore, major Linux distributions (Fedora, Ubuntu, Red Hat Enterprise Linux) provide OpenJDK as the default Java SE implementation.

5. Changes Since Java 11

As we can see in Oracle’s blog post, there are some important changes starting with Java 11.

First of all, Oracle will change its historical “BCL” license to a combination of an open source GNU General Public License v2 with the Classpath Exception (GPLv2+CPE) and a commercial license when using the Oracle JDK as part of an Oracle product or service, or when open source software isn’t welcome.

Each license will have different builds, but they’ll be functionally identical, with only some cosmetic and packaging differences.

Also, traditionally “commercial features,” such as Flight Recorder, Java Mission Control, and Application Class-Data Sharing, as well as the Z Garbage Collector, are now available in OpenJDK. Therefore, Oracle JDK and OpenJDK builds are essentially identical from Java 11 onward.

Let’s check out the main differences:

  • Oracle’s kit for Java 11 emits a warning when using the -XX:+UnlockCommercialFeatures option, whereas in OpenJDK builds, this option results in an error
  • Oracle JDK offers a configuration to provide usage log data to the “Advanced Management Console” tool
  • Oracle has always required third party cryptographic providers to be signed by a known certificate, while cryptography framework in OpenJDK has an open cryptographic interface, which means there’s no restriction as to which providers can be used
  • Oracle JDK 11 will continue to include installers, branding, and JRE packaging, whereas OpenJDK builds are currently available as zip and tar.gz files
  • The javac –release command behaves differently for the Java 9 and Java 10 targets due to the presence of some additional modules in Oracle’s release
  • The output of the java –version and java -fullversion commands will distinguish Oracle’s builds from OpenJDK builds

6. Other JDK Implementations

Now let’s take a quick look at other active Java Development Kit implementations.

6.1. Free and Open Source

The following implementations, listed in alphabetical order, are open source and free to use:

  • AdoptOpenJDK
  • Amazon Corretto
  • Azul Zulu
  • Bck2Brwsr
  • CACAO
  • Codename One
  • DoppioJVM
  • Eclipse OpenJ9
  • GraalVM CE
  • HaikuVM
  • HotSpot
  • Jamiga
  • JamVM
  • Jelatine JVM
  • Jikes RVM (Jikes Research Virtual Machine)
  • JVM.go
  • Liberica JDK
  • leJOS
  • Maxine
  • Multi-OS Engine
  • RopeVM
  • uJVM

6.2. Proprietary Implementations

There are also copyrighted implementations:

  • Azul Zing JVM
  • CEE-J
  • Excelsior JET
  • GraalVM EE
  • Imsys AB
  • JamaicaVM (aicas)
  • JBlend (Aplix)
  • MicroJvm (IS2T – Industrial Smart Software Technology)
  • OJVM
  • PTC Perc
  • SAP JVM
  • Waratek CloudVM for Java

Along with the active implementations listed above, we can see a list of inactive implementations and a short description of every implementation.

6.3. Differences Between Amazon Corretto JDK and OpenJDK

One popular implementation of the Java Development Kit is Amazon Corretto. Although it is based on OpenJDK, there are a few differences between them.

Amazon Corretto is a free, multi-platform, production-ready distribution of the OpenJDK. It is developed, maintained, and supported by Amazon Web Services (AWS) and is designed specifically for running Java applications on AWS and other cloud platforms. Amazon Corretto provides long-term support (LTS) and security updates at no cost.

Another key difference between OpenJDK and Amazon Corretto JDK is that Amazon Corretto includes additional features and optimizations that are specifically designed to improve performance, security, and reliability in production environments.

To summarize, OpenJDK and Amazon Corretto JDK are both implementations of the JDK, but they are designed for different purposes. OpenJDK is an open-source development tool, while Amazon Corretto JDK is a production-ready distribution of OpenJDK designed for use in cloud environments with free long-term support.

7. Difference Between OpenJDK and AdoptOpenJDK

In September 2020 AdoptOpenJDK underwent a rebranding and transitioned to Adoptium. This change in branding is significant, and it reflects a broader mission beyond just providing OpenJDK binaries.

OpenJDK and AdoptOpenJDK/Adoptium, although interconnected, are distinct projects, each offering free and open-source implementations of the Java Platform, Standard Edition (Java SE). To elucidate the contrasts between OpenJDK and AdoptOpenJDK/Adoptium, let’s delve into the key differences:

7.1. Project Origin and Governance

OpenJDK serves as the official reference implementation of the Java Platform and is overseen by Oracle. Functioning as an open-source project with contributions from diverse individuals and organizations, it plays a central role as the primary development kit. On the other hand, AdoptOpenJDK/Adoptium stands out as an independent community-driven initiative. Tailored to provide convenient access to well-crafted, pre-built OpenJDK binaries for various platforms, it operates autonomously from the official Oracle-led ecosystem.

7.2. Build and Distribution

OpenJDK provides source code that developers can use to build their binaries. Consequently, users are responsible for compiling the code and generating the Java runtime tailored to their specific platform. In contrast, AdoptOpenJDK/Adoptium seeks to streamline this process by providing pre-built binaries for various operating systems. This allows users to conveniently download and use these binaries directly, eliminating the necessity for manual compilation.

7.3. Binary Distribution Models

OpenJDK employs a model where the source code is made available, often distributed through package managers or directly from the official OpenJDK website. Users are required to compile the source code independently to acquire a functional Java runtime. On the contrary, AdoptOpenJDK/Adoptium simplifies this process by presenting users with pre-built binaries. These binaries can be easily downloaded and installed, offering a user-friendly alternative to the compilation of source code. AdoptOpenJDK/Adoptium further enhances user convenience by providing installation options compatible with various package managers such as apt, yum, and others.

7.4. Community Involvement

Within the OpenJDK community, a diverse range of contributors, including individuals and companies, actively participate. The project is governed by the OpenJDK Community, with Oracle assuming a significant role in its ongoing development. Conversely, AdoptOpenJDK/Adoptium is a community-driven initiative that actively encourages contributions from individuals and organizations. Operating independently of Oracle, AdoptOpenJDK/Adoptium is dedicated to fostering a collaborative environment to ensure the provision of freely accessible, high-quality OpenJDK binaries.

7.5. Licensing

Both OpenJDK and AdoptOpenJDK/Adoptium share a common foundation, relying on the same source code and typically adhering to an identical licensing model. Specifically, they are released under the GNU General Public License, version 2, complemented by the Classpath Exception (GPLv2+CPE). This licensing structure underscores the commitment of both projects to open-source principles and accessibility.

8. Conclusion

In this article, we focused on the two most popular Java Development Kits today.

First, we described each of them, and then we emphasized the differences between them. We also paid special attention to the changes and differences since Java 11. Finally, we listed other active implementations that are available today.

Baeldung Pro – NPI EA (cat = Baeldung)
announcement - icon

Baeldung Pro comes with both absolutely No-Ads as well as finally with Dark Mode, for a clean learning experience:

>> Explore a clean Baeldung

Once the early-adopter seats are all used, the price will go up and stay at $33/year.

Partner – Orkes – NPI EA (cat = Spring)
announcement - icon

Modern software architecture is often broken. Slow delivery leads to missed opportunities, innovation is stalled due to architectural complexities, and engineering resources are exceedingly expensive.

Orkes is the leading workflow orchestration platform built to enable teams to transform the way they develop, connect, and deploy applications, microservices, AI agents, and more.

With Orkes Conductor managed through Orkes Cloud, developers can focus on building mission critical applications without worrying about infrastructure maintenance to meet goals and, simply put, taking new products live faster and reducing total cost of ownership.

Try a 14-Day Free Trial of Orkes Conductor today.

Partner – Orkes – NPI EA (tag = Microservices)
announcement - icon

Modern software architecture is often broken. Slow delivery leads to missed opportunities, innovation is stalled due to architectural complexities, and engineering resources are exceedingly expensive.

Orkes is the leading workflow orchestration platform built to enable teams to transform the way they develop, connect, and deploy applications, microservices, AI agents, and more.

With Orkes Conductor managed through Orkes Cloud, developers can focus on building mission critical applications without worrying about infrastructure maintenance to meet goals and, simply put, taking new products live faster and reducing total cost of ownership.

Try a 14-Day Free Trial of Orkes Conductor today.

eBook – HTTP Client – NPI EA (cat=HTTP Client-Side)
announcement - icon

The Apache HTTP Client is a very robust library, suitable for both simple and advanced use cases when testing HTTP endpoints. Check out our guide covering basic request and response handling, as well as security, cookies, timeouts, and more:

>> Download the eBook

eBook – Java Concurrency – NPI EA (cat=Java Concurrency)
announcement - icon

Handling concurrency in an application can be a tricky process with many potential pitfalls. A solid grasp of the fundamentals will go a long way to help minimize these issues.

Get started with understanding multi-threaded applications with our Java Concurrency guide:

>> Download the eBook

eBook – Java Streams – NPI EA (cat=Java Streams)
announcement - icon

Since its introduction in Java 8, the Stream API has become a staple of Java development. The basic operations like iterating, filtering, mapping sequences of elements are deceptively simple to use.

But these can also be overused and fall into some common pitfalls.

To get a better understanding on how Streams work and how to combine them with other language features, check out our guide to Java Streams:

>> Join Pro and download the eBook

eBook – Persistence – NPI EA (cat=Persistence)
announcement - icon

Working on getting your persistence layer right with Spring?

Explore the eBook

Course – LS – NPI EA (cat=REST)

announcement - icon

Get started with Spring Boot and with core Spring, through the Learn Spring course:

>> CHECK OUT THE COURSE

Partner – Moderne – NPI EA (tag=Refactoring)
announcement - icon

Modern Java teams move fast — but codebases don’t always keep up. Frameworks change, dependencies drift, and tech debt builds until it starts to drag on delivery. OpenRewrite was built to fix that: an open-source refactoring engine that automates repetitive code changes while keeping developer intent intact.

The monthly training series, led by the creators and maintainers of OpenRewrite at Moderne, walks through real-world migrations and modernization patterns. Whether you’re new to recipes or ready to write your own, you’ll learn practical ways to refactor safely and at scale.

If you’ve ever wished refactoring felt as natural — and as fast — as writing code, this is a good place to start.

eBook Jackson – NPI EA – 3 (cat = Jackson)