I've been coding in Java and Kotlin for a while now, and I'm always using whatever JDK is needed for a project—I've ended up with quite a few versions installed! Recently, I noticed that when I create a Java project in IntelliJ, I see a range of JDK options from various vendors for the same version, like Amazon Corretto, Azul Zulu, GraalVM, JetBrains, and Microsoft OpenJDK.
I'm curious about how these vendors differ and if some are better suited for specific scenarios, or if they come with particular licenses that might affect their use. If I understand correctly, a JDK is effectively the JRE (Java Runtime Environment) plus development tools and libraries. But I'm a bit lost on how different vendors produce their own versions. Do they just offer additional tools or libraries, or can I use any of these JDKs for any project? Are there licensing concerns with specific vendors that would restrict their use in commercial projects?
4 Answers
Think of it this way: JDKs fulfill the Java contract. For example, the Java method `File.mkdir()` guarantees to create a directory, but it doesn’t dictate how that’s achieved under the hood. Different vendors might use different system calls or techniques to meet that promise, as long as the end behavior remains consistent across their implementations.
All these JDKs are built on OpenJDK, which is open-source, so they share the same core functionality. The differences mostly come down to performance optimizations, support, and some additional features. If you're unsure, I'd recommend going with Temurin (from Eclipse Adoptium) or Amazon Corretto. Both are free, production-ready, and have no license restrictions.
GraalVM is especially great if you’re looking into native compilation or working with multiple languages. JetBrains Runtime is optimized for IntelliJ itself, so it’s probably not the best choice for general projects.
Most JDKs today are just builds of the same OpenJDK codebase, different vendors just package and support them in varied ways. The core JVM and standard libraries remain relatively uniform, while the companies might offer different support durations, patching schemes, and performance improvements. For general use, any OpenJDK build should work just fine, but in company settings, long-term support and commercial backing could be more critical than minor technical differences.
There's an interesting site called whichjdk.com that can help you compare options. It's a bit confusing because the Java language is a specification, meaning it's more like a description of the language rather than actual runnable code. Oracle mainly maintains this spec, and their JDK serves as the reference or 'canonical' version.
Other companies, like Azul and Microsoft, take this specification and create their own versions. Essentially, they develop distinct JDKs based on the same rules outlined in the Java specification.
In practice, if you’re just starting out, you won’t see significant differences among the JDKs for the same version. Once you dive deeper, however, stuff like GraalVM shines due to its cloud-friendly features, which can help reduce startup times and optimize memory usage.

Thanks for the link! This really clears up how those different versions fit together.