The Java Development Kit (JDK) is a software development environment used to develop Java applications and applets. It includes the Java Runtime Environment (JRE), a compiler (javac), debugger (jdb), documentation generator (javadoc), archiver (jar), and other essential tools for Java development.
Key Components of the JDK
javac: Compiles Java source code into bytecode.
java: Runs Java applications using the JVM.
javadoc: Generates API documentation from source code comments.
jar: Packages related class files into a single JAR file.
jdb: Debugs Java programs.
jshell: Interactive tool introduced in Java 9 for testing code snippets.
JDK vs. JRE vs. JVM
JVM (Java Virtual Machine): Executes Java bytecode.
JRE: Provides the libraries and JVM to run Java applications.
JDK: Includes the JRE plus development tools—required for writing and compiling Java code.
Popular JDK Options
Oracle JDK: Commercial version with long-term support (LTS) under Oracle’s No-Fee Terms and Conditions (NFTC) license.
OpenJDK: Open-source reference implementation; the foundation for most JDKs.
Adoptium Temurin (Eclipse Temurin): Free, open-source, and widely used for production.
Azul Zulu: Based on OpenJDK, supports multiple platforms and is free for commercial use.
Bellsoft Liberica: High-performance JDK with strong support for cloud and container environments.
Downloading the JDK
Oracle JDK: Download from Oracle's official site
OpenJDK Builds: Adoptium (Eclipse Temurin) or OpenLogic
Latest LTS Versions: Java 17 and Java 21 are recommended for new projects; Java 8 remains widely used for legacy systems.
✅ Recommendation: For most developers, Adoptium Temurin or Azul Zulu are excellent free, general-purpose JDKs. Use Oracle JDK only if you need specific enterprise features or support.
Factsheet
java - Differences between Oracle JDK and OpenJDK - Stack Overflow
The best general-purpose JDK out there? And what's your go-to
Java / Java SE / JDK / JRE - which is which and what do I want?
Is the Java JDK written in C/C++? : learnprogramming
Videos
Both OpenJDK and Oracle JDK are created and maintained currently by Oracle only.
OpenJDK and Oracle JDK are implementations of the same Java specification passed the TCK (Java Technology Certification Kit).
Most of the vendors of JDK are written on top of OpenJDK by doing a few tweaks to [mostly to replace licensed proprietary parts / replace with more high-performance items that only work on specific OS] components without breaking the TCK compatibility.
Many vendors implemented the Java specification and got TCK passed. For example, IBM J9, Azul Zulu, Azul Zing, and Oracle JDK.
Almost every existing JDK is derived from OpenJDK.
As suggested by many, licensing is a change between JDKs.
Starting with JDK 11 accessing the long time support Oracle JDK/Java SE will now require a commercial license. You should now pay attention to which JDK you're installing as Oracle JDK without subscription could stop working. source
Ref: List of Java virtual machines
For Java 7, nothing crucial. The OpenJDK project is mostly based on HotSpot source code donated by Sun.
Moreover, OpenJDK was selected to be the reference implementation for Java 7 and is maintained by Oracle engineers.
There's a more detailed answer from 2012 on difference between JVM, JDK, JRE & OpenJDK, which links to an Oracle blog post:
Q: What is the difference between the source code found in the OpenJDK repository, and the code you use to build the Oracle JDK?
A: It is very close - our build process for Oracle JDK releases builds on OpenJDK 7 by adding just a couple of pieces, like the deployment code, which includes Oracle's implementation of the Java Plugin and Java WebStart, as well as some closed source third party components like a graphics rasterizer, some open source third party components, like Rhino, and a few bits and pieces here and there, like additional documentation or third party fonts. Moving forward, our intent is to open source all pieces of the Oracle JDK except those that we consider commercial features such as JRockit Mission Control (not yet available in Oracle JDK), and replace encumbered third party components with open source alternatives to achieve closer parity between the code bases.
-
Which one do y’all prefer for general-purpose dev?
-
What's your favorite and why?
Okay, context. I'm trying out some programming languages to perhaps get into (after previously primarily doing stuff with C#). One of these is Java. I had a 2019 version of Eclipse installed from last time I wanted to learn Java. Updated it to 2021, and it tells me I need Java 11 or higher.
So I google "download Java". Oracle offers me to download Java 8 Update 291, released April 2021. I check my instaleld version. Sure enough, I have Java 8 Update 291. If I am up to date, why is Eclipse complaining, I wonder? So I google Java 11. Huh, what's that, there are versions of Java up to 16? One article mentions that Java 8 has been deprecated for years. Odd, I think, didn't Oracle tell me just now that Java 8 was released in 2021? Oh, I see, they are talking about something called "Java SE". So I google what that is. "java vs java se", I google, but all I get are articles about how Java SE is different from something called Java EE. Never heard of it, I don't want it. In the meantime, I have also googled for JDK, since I assume that I need the Java SDK to get the compilers. Maybe the JDK has a different version number than the JRE, I theoretise. But then what is this Java SE? At one point, it says it's the standard edition, but on the next page, it says it's "for reference purposes only". Whatever that means. Can I use it to run and compile Java or not, I ask.
tldr: why is there a Java 16 if Oracle tells me 8 is the latest, which one do I want to run and program with the latest Eclipse?
P.S. necessary context is perhaps that I'm on 64-bit Windows 7 (my Eclipse install on my Linux laptop works fine)
