What is the difference between Azul OpenJDK, Zulu OpenJDK and OpenJDK?
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.
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 AdoptOpenJDK, a project to provide (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.
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.
Related
IntelliJ allows us to install JDK's
However, while the version picker shows all historical Oracle OpenJDK versions, it only seems to provide downloads to the latest OpenJDK version.
As soon as you try to chose version 18, it switches to Amazon Coretto JDK
I can't use JDK 19, because Gradle does not yet support it, and I'm not sure if I should and want to pick any of the other images.
Is this a bug in IntelliJ or intentional and how can I download older versions from the IDE directly?
Also, is it safe to just pick any of the other images or would they lack some of the core JDK functionality?
Is this a bug in IntelliJ or intentional and how can I download older versions from the IDE directly?
I do believe that not an IntelliJ bug, but the decision/responsibility of JetBrains Co.
By default IntelliJ downloads list of available JDKs from https://download.jetbrains.com/jdk/feed/v1/jdks.json.xz, the url is actually controlled by jdk.downloader.url key in registry
tl;dr
You can confidently choose any JDK product offered by IntelliJ. The Amazon Corretto product will work with the same Java-specified behavior, and will provide the same performance, as the Oracle OpenJDK product.
Amazon reserves the right to deliver urgent fixes, and to include any tweaks needed for their purposes as a cloud provider, in their Corretto product. Other than that, Corretto is built from the same OpenJDK codebase as the Oracle OpenJDK product.
To quote the Corretto product page:
Amazon Corretto is certified to meet the Java SE standard and can be used as a drop-in replacement for many Java SE distributions.
Details
is it safe to just pick any of the other images or would they lack some of the core JDK functionality?
The Oracle OpenJDK product is not any better or more special than any other Java implementation.
Nearly all Java implementations are built largely, if not entirely, for the codebase developed at the OpenJDK project. OpenJDK is an open-source project owned by Oracle with major involvement from IBM, Apple, Red Hat, and others. Some of those companies contributed their own JDK source code to OpenJDK in order to centralize development of a single joint implementation of the Java specifications.
Oracle’s Oracle OpenJDK product, available at no cost, is simply a build made straight from the OpenJDK codebase. This product is offered without support.
Oracle’s commercial Java product, Oracle Java, is also largely built from OpenJDK, but Oracle reserves the right to add patches for urgent bug fixes or compatibility tweaks for fast delivery to their paid customers.
You can choose and use a JDK product from any of several vendors. All are well-tested, perform similarly, and share the behavior defined by the Java specifications.
Some vendors perform additional testing beyond that done at the OpenJDK project, and therefore beyond that done for Oracle OpenJDK. For example, the Adoptium project sponsors an advanced testing suite, AQAvit, used for their own JDK products, and made available to other JDK vendors.
JDK vendors include, in no particular order: Azul Systems, SAP, BellSoft, Adoptium, Oracle, Microsoft, Amazon, IBM, Red Hat, and more.
I recommend reading the white paper from pillars of the Java community, Java Is Still Free.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 3 years ago.
Improve this question
since Oracle JDK is need to be paid for production environment , i will to know if OpenJDK/AdoptOpenJDK give me the same stablity too. I read that Oracle is developing OpenJDk, they for i would suggest that OpenJDK 11 is the same stable like Oracle JDK 11 too. But i have no experience in that area. Another question is: what is the main difference between OpenJDK and AdoptOpenJDk for the stable serie 11? What would you prefere to use for production environment? there for, i would be happy if someone can advice me.
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.
tl;dr
Oracle and Adoptium (formerly AdoptOpenJDK) are but two of several vendors offering builds and installers.
All of the implementations of Java available today are based entirely or substantially on the source code provided by the OpenJDK project. All of them should show the same compatibility, stability, and functionality promised by the Java platform specifications.
You have a choice of several vendors offering one or more implementations of the Java platform. Some of those require payment of a fee in some situations, and some are free-of-charge. All are high-quality and frequently updated, per their support and end-of-life policies.
There is no one best vendor or product; choose according to your needs.
Details
OpenJDK is a project hosting an open-source implementation of the Java platform specifications. This project is run by Oracle, IBM, Apple, Red Hat, Azul Systems, SAP, and others. This project offers only source-code, not complete builds nor convenient installers.
Many vendors provide builds based on OpenJDK. Most are direct builds with little or no added value, though vendors have the right to include fixes or features as long as they abide by licensing terms.
Oracle is one such vendor. Oracle offers three products:
Oracle JDK for their paying customers (and free-of-cost for others doing developing & testing, but not deployment)
jdk.java.net, builds of OpenJDK, based directly and entirely on OpenJDK source code, no added value. Provided free-of-cost and unsupported.
GraalVM, a very special Java implementation, with editions either free-of-cost or fee-based.
Oracle has declared their intention to keep Oracle JDK at feature-parity with OpenJDK. They even went so far as to donate some of their commercial products such as Mission Control and Flight Recorder to the OpenJDK project. So you should expect the same stability, speed, and features — except that Oracle reserves the right to more quickly ship patched versions of their supported product to their paying customers when warranted. Submitting to OpenJDK and getting a release there may take more time.
Oracle is not the only vendor producing builds of Java with and without paid support options. Some individual companies provide builds with and/or without paid support. And key members of the Java community have combined their efforts, founding the Adoptium project, formerly known as AdoptOpenJDK.net, and now housed at the Eclipse Foundation. This project hosts infrastructure for building and testing OpenJDK builds for a variety of hardware and OS platforms, some of which offer a choice between the HotSpot and OpenJ9 JVMs. See Difference between OpenJDK and AdoptOpenJDK.
Here is a flowchart I made that may assist you in choosing a vendor for a Java implementation.
There are no wrong choices here. As far as I know, all of these vendors do a solid job of building, publishing, and updating their releases. But here are a few considerations that might lead you to a particular vendor.
I just recently heard about the licensing for Oracle JDK, after trying to create a springboot app for a year. I wanted to find out if there are other alternative JDK which are free for production/commercial use, and if they are what is the certainty that it wouldnt be paid for after or that it would be in the market for long. My only alternative now is to rewrite my code in another language.
Yes, Java is still free
It is vital that you study: Java Is Still Free. Written by key members of the Java community, providing both a summary and all the gory details.
Guidance
The OpenJDK source code is available free-of-cost per its GNU GPL+linking exception license.
Several vendors provide releases based on that OpenJDK source code. They can do so free-of-cost or they can charge a fee or set other licensing terms, as long as they abide by the GNU GPL+linking exception licensing.
The Oracle JDK in latest versions has changed its licensing. It can no longer be used in production without a paid support plan. Contact Oracle for details. The Oracle JDK has converged to be at feature-parity with OpenJDK, with Oracle having contributed to OpenJDK even more of their formerly commercial parts such as Flight Recorder and Mission Control.
Other vendors also provide releases with commercial terms, for a product which may contain some OpenJDK code.
And some vendors such as Adoptium with their Eclipse Temurin product (formerly AdoptOpenJDK), Azul Systems with their Zulu product, and Amazon Web Services with their Corretto product, all provide builds of OpenJDK without payment required.
A release may or may not be labeled “Java”. If a vendor want their release to carry the branding “Java”, they must pass rigorous testing for compliance with the Java specifications and abide by Oracle’s terms for using their trademark.
Here is a flowchart that may help guide you in determining how and where to obtain Java 11. Important: This info may be incorrect. You are responsible for studying the details of the license under which you use any software.
(Note that the diagrams say "Adoptium", which is not a distribution, but instead the organization that produces the distribution called "Eclipse Temurin". See here for more info.)
All Oracle's OpenJDK's are free, in any environment. The issue arises when you use the Oracle JDK (not with the OpenJDK). Since they are functionally the same since Java 11, there is no need to switch languages.
More details here:
https://blog.jetbrains.com/idea/2018/09/using-java-11-in-production-important-things-to-know/
Java 11 does not come with a JRE for download, unlike past Java versions. I got an error "no java run-time environment" when running some Java-based software. To fix the problem, I had to install Java 8 JRE.
How can I get my PC to run Java 11 JRE given that there is no more JRE 11 to download?
I am using Windows 10.
The Answer by Stephen C is correct, and important.
Oracle no longer intends for end-users to be installing a JRE or a JDK. Java Applets in a browser and Java Web Start app delivery are both being phased out, leaving the end-user with no need for a JRE. Java-based apps are expected to bundle their own Java implementation. The only folks consciously installing a JDK will be developers & server-side sysadmins.
Important:
Understand clearly the nature of the OpenJDK project, as explained in Wikipedia
Read this white paper by Oracle of 2018-03, Java Client Roadmap Update
Read the white paper Java Is Still Free, authored by key members of the Java community.
Learn about:
Java Platform Module System
jlink (JEP 282)
jpackage (JEP 343)
Desktop apps are now expected to bundle their own Java runtime. Those tools listed above can create a very small runtime custom-fit to your particular app.
Here is a flowchart diagram that may help you finding and deciding amongst the various vendors providing a Java 11 implementation.
And a table mapping possible motivations or considerations leading to suggested vendors of Java.
Compatibility concerns
In the Comments, an question was raised, concern over compatibility issues between releases by various vendors.
Firstly, know that the OpenJDK project includes a vast suite of tests known as the OpenJDK Community Technology Compatibility Kit (TCK). Vendors are free to self-declare whether their release has passed those tests. These claims are not verified, and rely on the honor system. On my diagram above, I have check-marked "TCK" on the couple vendors I know have self-declared: Oracle JDK by Oracle & Zulu by Azul Systems.
All the products listed in the blue barrel area of my chart above are built almost directly on the OpenJDK source code. So generally, you should see virtually identical compatibility.
There are two areas of concern you might consider: Technology differences, and schedule of updates/patches.
As for technology differences, vendors using the OpenJDK project can ship with either the HotSpot engine or the OpenJ9 engine. These will differ on performance (faster/slower startup versus overall speed, more/less memory), but their behavior in terms of complying with the Java specifications should be identical. They could differ, and certainly either might present a flaw (that likely would be soon fixed) that the other lacked. Personally, I would not be concerned by this, but I mention it for completeness.
Another technology difference is the different kind of JVM used by Zing by Azul Systems and GraalVM by Oracle. Either of these might differ in some way from each other or from the other products, because they intentionally have a different kind of JVM implementation, to offer special features. But given the thoroughness of the Java specs, they should not be incompatible. If they were, you can expect any compatibility problem to be rapidly resolved. If I needed the special features of either of these products, I would use them with full confidence.
Another possible concern is the speed with which a vendor might update their own releases with certain bug fixes or security patches. For example, Oracle has stated that they reserve the right to immediately ship any ready patches to their own customers, while submitting those to the OpenJDK project for consideration. Certainly, any of the vendors providing commercial support are likely to rush a fix or patch to their paying customers. Those releases built as a courtesy to the community provided free-of-cost may take longer to update, likely after the OpenJDK project has incorporated a fix/patch.
And each vendor is free to modify their code base at will, as long as they comply with the Java specs. For example, the Corretto team at Amazon has already made improvements to their own release, and then shared those changes upstream to the OpenJDK project. There may a gap in time before OpenJDK incorporated those changes, if they decide to do so. So it is possible that various releases might differ. But at this point, all of the vendors in the Java community seem to have sincere commitments to work together to prevent fragmentation. So, again, I have no real concern here, but mention this for completeness.
Right now, there seem to be no free + easy Oracle-supported Java 11 JRE (only) options. Your options are:
Download and use an OpenJDK Java 11 JDK from the OpenJDK site.
Download and use an Oracle Java 11 JDK from the Oracle site ... and be sure that you fully understand the restrictions on "commercial use" that now apply to the Oracle Java 11+ releases.
Try to roll your own Windows JRE for Windows from the OpenJDK sources; see Create jre from OpenJDK Windows. (I wouldn't recommend doing this. There are better alternatives.)
Look into using the new jlink tool to create a custom image (basically a cut-down JRE) for your application. This seems to be the option that Oracle want 3rd-party application developers to use.
Talk to Oracle sales about a Java support contract, and specifically ask about how to get a JRE build. (I don't know what the answer will be. If someone does try this, and they get a positive response, please comment!)
Use a 3rd-party Java JRE distribution.
The list of Java vendors changes over time, but as of now it includes AdoptOpenJDK, Amazon, Azul, BellSoft, IBM, jClarity, Red Hat and SAP. See also: Difference between OpenJDK and Adoptium/AdoptOpenJDK
Some of these vendors offer JRE distros. Check their download sites.
Since (nearly) all Java vendors base their products on the same standard OpenJDK codebase that is used for Oracle Java, there is no reason to be concerned about the stability of a 3rd party JRE. Some vendors offer (paid for) support.
(Or switch from Windows to Linux. I can install an OpenJDK Java 11 JRE-only package from the distro package manager on recent versions of Ubuntu, Fedora, ...)
For those people who think that Oracle Java 11 and OpenJDK Java 11 are the same, please read the following from the Oracle download site:
Important changes in Oracle JDK 11 License
With JDK 11 Oracle has updated the license terms on which we offer the Oracle JDK. The new Oracle Technology Network License Agreement for Oracle Java SE is substantially different from the licenses under which previous versions of the JDK were offered. Please review the new terms carefully before downloading and using this product.
Oracle also offers this software under the GPL License on jdk.java.net/11
Notice that Oracle are saying that the licenses for Oracle Java and OpenJDK Java are different. (Not withstanding that the two are built from essentially the same source code base.) Ignore this at your peril!
You can use the "adoptopenjdk" project website to download latest jre and JDK https://github.com/AdoptOpenJDK/openjdk-jdk11
find latest link here > https://adoptopenjdk.net/releases.html?variant=openjdk11&jvmVariant=hotspot
Edit:
Problem has been fixed
I have used their night builds to workaround the problem of missing JRE in JDK package
https://adoptopenjdk.net/nightly.html?variant=openjdk11
zulu still maintains the jre (11 - 16) and it is recommended by some vendors.
you can download it on their site: https://www.azul.com/downloads/zulu/
I want to update my jdk for some security reasons in Redhat system and updated to jdk7u79 successfully.
Redhat has published some java vulnerabilities in their site with the name Oracle java for RHEL Server.
Do I need to update my jdk as mentioned in the RHEL site? Is jdk from oracle site is different from Oracle java for RHEL Server.
Reference
Oracle java is based on openjdk with some proprietary bits added:
– Sometimes those bits are supposed to increase performance (jrockit traces…),
– Sometimes those bits will improve compatibility (because they've been inherited from SUN and app authors tested against them since SUN era). A lot of the "stability" attributed to Oracle/Sun java is just app authors learning to avoid the bugs of Oracle/Sun proprietary bits, and adding workarounds that trip on jvms without those bugs (see also : IE6)
Red Hat java is based on the openjdk only
– pure openjdk is better integrated with the system. The openjdk guys try hard to remove residual java-isms and use the same conventions as other system apps
— pure openjdk is more forward facing. Oracle knows that SUN almost killed Java with byzantine combinations of proprietary tech it couldn't afford to maintain. Anything Oracle needs long term will end up in openjdk. It is sufficient for the openjdk implementation to achieve parity with the proprietary bits for Oracle to kill them – no $$$ in maintaining proprietary tech when similar free tech is available.
– it is very common for Red Hat to backport the code written for the next openjdk version in current redhat java, when it solves a problem in this version (as long as the current API is conserved), while Oracle will tend to wait for this next openjdk version before proposing it.
To my knowledge Oracle has been thoroughly disgusted by the way SUN handled java 1.6 (it was called java 1.6 but development was not linear, desktop/server/windows/linux jvms were all different with bits added in one version that could not be used in another due to coding shortcuts and complex licensing agreements, each of them lagged the others one way or another). Oracle intends to maintain a classic linear development pipe: openjdk next → current openjdk → oracle java
Whichever version you use you need to apply the security updates published by its maintainer. It's useless to use Oracle java as update to Red Hat java or vice versa, it's slightly different code with slightly different security bugs. Both companies have capable engineers and share security fixes in the openjdk trunk. When the fixed builds are published depend on embargo agreements and security fix policies. Oracle will tend to batch fixes in infrequent pre-planned releases, unless there is a critical vulnerability. Red Hat will publish as soon as there is something security-related to fix, be it big or small. Red Hat build processes are more agile than those Oracle uses. The Linux build processes are 100% automated, while Oracle needs to worry about windows & co.
Lastly Oracle Java as published in RHEL is a repackaging of Oracle files to use native Linux packaging tech and use the same path (etc) conventions as the openjdk packages (making it easy to replace one with another), while Oracle Java as published by Oracle still follows the very strange naming and path conventions SUN Solaris/windows people thought appropriate on Linux. It should have no more and no less security vulnerabilities than Oracle Java as published by Oracle (for the same version), just be a lot more convenient to deploy. It is designed to be just another linux package set, that can be deployed on many linux servers using native package deployment systems. When you have hundreds of servers to manage it is a great help not to have to special-case the jvm.
Each year in february Red Hat and Oracle top java people meet publicly at fosdem and present their current priorities.If you're interested you can consult their past presentations in fosdem public archives.