-
Which one do y’all prefer for general-purpose dev?
-
What's your favorite and why?
There are bunch of those like Amazon Corretto, but I haven't really found any good resource really running comparisons about their performance etc under different scenarios. To me it almost looks like they only exist just in case Temurin goes tits up due to legal issues or mismanagement.
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.
Java specification versus implementation
Java is defined by a set of specifications, JSRs, and JEPs, all published by Oracle.
Those specifications are implemented in the source code found at the OpenJDK project.
Several vendors provide builds of that source code. Some charge money for those builds and some do not.
Azul Systems is one such vendor, a company providing multiple implementations. Zulu Community is one, provided free of charge. Zulu Enterprise is another of their products, a commercial offering. Zing is yet another product of theirs, a JVM/JDK for special needs.
Other JDK product vendors include SAP, Amazon, Microsoft, Oracle, BellSoft, Adoptium, Red Hat, IBM, Linux “apt get”, FreeBSD “Ports and Packages”, and more.
You asked:
Is there any practical difference between Azul OpenJDK, Zulu OpenJDK and OpenJDK?
Yes and no.
Firstly, OpenJDK provides only source code. So you cannot use OpenJDK to run Java apps. You must first build the OpenJDK source code yourself to get executables for your particular host platform, or you must rely on a vendor make a build for you. As seen in the flow chart below, there are several such vendors making builds of the OpenJDK source code.
As for products from Azul Systems, there is no such thing as Azul OpenJDK nor Zulu OpenJDK that I know of. Azul offers multiple products, as discussed above, but none of them by that name.
The Zulu name is used for 3 products, the Community and Enterprise editions above, plus Zulu Embedded for running on constrained hardware resources. As explained on their web site, all three of these are builds of the source code from OpenJDK.
So, no, basically no practical differences, as they all are builds of OpenJDK, and behave similar to most any other build of OpenJDK source code. Any desktop, server, or console application written to comply with the Java specifications will run on Zulu Community and Zulu Enterprise.
But, yes, there are some differences in that Azul adds some features such as having back-ported Flight Recorder and Mission Control to their Java 8 version of Zulu products. And Azul, like any such JDK provider, reserves the right to add a patch when urgently needed to fix a critical bug or security vulnerability without waiting for a release in the OpenJDK codebase.
And, yes, there are major differences with the Zing product by Azul as that is intended for special needs such as supporting very large amounts of memory. While I presume this product uses parts of OpenJDK, Zing performs quite differently to meet those special needs while still conforming with the Java specifications to be able to run any application written in Java.
Another practical difference is that you can obtain support services from Azul Systems for their builds. Several of the vendors provide support services for their builds. OpenJDK provides only source code, no support.
Lastly, I should mention that Azul Systems is one of the sponsors of Adoptium (formerly known as AdoptOpenJDK), a project at the Eclipse Foundation. Adoptium provides (a) builds of OpenJDK, and (b) test suites for quality assurance.
If you have specific product questions, you should study the Azul.com web site, and contact the sales department at Azul Systems. I speak only for myself here, unaffiliated with that company. I have on occasion used their Zulu Community product, but not the others.
➥ Read Java is Still Free to understand the ecosystem of Oracle, OpenJDK, and the various vendors of Java implementations.
Here is a flow chart I made to help guide you in choosing a vendor for an implementation of Java 11.

SDKMAN!
Tip: For Unix-style OSes such as macOS, Linux, and BSD, the most convenient way to locate, download, install, and uninstall a JDK/JRE from a subset of these vendors is by using SDKMAN!.
Let's start with full disclosure, I work for Azul (which I think makes me qualified to answer the question).
OpenJDK is a "...place to collaborate on an open-source implementation of the Java Platform, Standard Edition, and related projects". Primarily, it hosts the source code repositories for the versions of Java since JDK 6. Sun open-sourced their implementation of JDK 7 in 2007, which was how OpenJDK originated. Subsequently, a project was created for JDK 6 (which oddly, is based on JDK 7). Each version since then has been developed through the OpenJDK.
Azul is a company that specialises in Java and JVM products.
Zulu is the name chosen for the binary distribution of the OpenJDK provided by Azul. This comes in three versions:
- Zulu Community: The free distribution provided under the GPLv2 with classpath exception (CPE) license.
- Zulu Enterprise: A commercially supported binary distribution with SLAs for how quickly updates will be made available after Oracle provide theirs, two versions of each update (CPU and PSU) and phone/e-mail bug reporting/resolution.
- Zulu Embedded: Porting and support for specific chipsets and hardware configurations for embedded applications. Also, a commercial product, although free ARM 32 builds are available for Zulu Community.
To summarise, OpenJDK is the source code, Azul is the company and Zulu is the binary distribution built from OpenJDK.
Hello. I am currently using Amazon Corretto and was wondering if there would be some meaningful difference if I was using 'Microsoft build of OpenJDK' or IBM? How is the build of OpenJDK chosen in real life?
why do people use Azul’s Zulu 9.0.0.15 release of OpenJDK instead of JDK downloaded from oracle.com?
In short, there is no version of Java 9 freely supported by Oracle. You can download the last free version from Oracle.
From March 2019, Oracle will only give free support for Java 12 (for 6 months). Oracle will provide free support for the latest version for the first 6 months of release. However, there are other organisations, like Azul, which provide commercially supported releases from Java 8. To get Oracle's supported releases you need to pay a subscription.
Other organisations such as AdoptJDK and RedHat have their own releases.
For more information
https://www.oracle.com/technetwork/java/javase/tech/eol-135779.html
Is this because Oracle made the JDK commercial?
The OpenJDK has been around since Java 6, but there were some differences and not a strong reason for many to shift versions.
From Java 11, the main difference between OpenJDK and Oracle Java 11 is the installer.
Hopefully, we will see more companies paying for support for the products they rely on to help make money, but also see a variety of options for free use in a secure way.
There are a few OpenJDK's out there. The official Open JDK and Oracle's JDK are based on the same code but have different licensing models. The main reason for creating them was to tweak some parts of the code to better handle a part of the API that you think should work differently.
For example, let's say you are a company that uses JAVA and notices that some part of the API works to slowly for your needs. You then can try to improve it and submit it to be part of the Oracle OpenJDK. But it could be rejected or the time it takes for it to be approved takes too long. You might opt to just branch the OpenJDK to make your own version.
At the moment Oracle is going to stop giving its own implementation of the JDK for free but it its version of OpenJDK will remain open and free.
If you read here you will see that Zulu too is just OpenJDK certified and promised to be maintained. My guess is that the company is just using OpenJDK to give better service to its subscribers so they will get notified when new fixes and patches become available to the general public. I don't think they change anything in the JDK but just create custom delivery tools around it.
There's
-
https://www.azul.com/downloads/#downloads-table-zulu
-
https://adoptium.net/temurin/releases
-
https://aws.amazon.com/corretto/
-
https://developer.ibm.com/languages/java/semeru-runtimes/downloads/
-
https://dragonwell-jdk.io/#/index
-
https://www.microsoft.com/openjdk
-
https://sap.github.io/SapMachine/
Which one of these do I use for which Minecraft versions?
Edit: Question is more along the lines of performance. Usually I go with zulu..because...reasons? Was wondering if there's a performance reason to switch to Temurin or Correto? Java is java, sure, but surely there's differences in these versions, no?
I remember, distinctly, there were different implementations of the JVM: HotSpot GraalVM, ZulVM, openj9, that had a performance impact on MC, https://en.wikipedia.org/wiki/List_of_Java_virtual_machines