JDK
Kurz: Java Development Kit — das komplette Werkzeugpaket, um Java-Programme zu schreiben, zu kompilieren und auszuführen.
Genauer: Enthält unter anderem den Compiler (javac), die Laufzeitumgebung (JRE mit der JVM) und Debugging-Werkzeuge. Wer nur fertige Java-Programme ausführen will, braucht lediglich das JRE; zum Entwickeln ist das vollständige JDK nötig.
Im Detail
Die Beziehung der drei Begriffe lässt sich als Schalenmodell verstehen: die JVM (Java Virtual Machine) führt Bytecode aus, das JRE (Java Runtime Environment) bündelt die JVM zusammen mit den Standardbibliotheken, die zum Ausführen fertiger Programme nötig sind, und das JDK (Java Development Kit) enthält zusätzlich zum JRE noch die Entwicklungswerkzeuge — allen voran den Compiler javac, der .java-Quelldateien in .class-Bytecode übersetzt.
javac Hallo.java # kompiliert zu Hallo.class (Bytecode)
java Hallo # führt den Bytecode über die JVM ausSeit Java 11 gibt es kein eigenständiges JRE-Downloadpaket von Oracle mehr — wer nur ausführen will, installiert heute meist ebenfalls ein (schlankeres) JDK, oder nutzt Tools wie jlink, um sich eine minimale, auf die eigene Anwendung zugeschnittene Laufzeitumgebung zu bauen. Verschiedene Anbieter (Oracle, Eclipse Adoptium/Temurin, Amazon Corretto) bieten eigene, meist kompatible JDK-Distributionen an, oft mit unterschiedlichen Support-Zeiträumen und Lizenzbedingungen.
LTS- vs. Feature-Versionen
Seit Java 2018 auf einen halbjährlichen Release-Rhythmus umgestellt hat, unterscheidet man zwischen regulären Feature-Releases (kurzer Support, meist nur bis zur nächsten Version) und Long-Term-Support-Versionen (LTS, z. B. Java 8, 11, 17, 21), die über Jahre hinweg mit Sicherheitsupdates versorgt werden. Für Produktionsumgebungen wird fast ausschließlich eine LTS-Version eingesetzt — ständig auf jede neue Feature-Version zu aktualisieren wäre für ein Unternehmen mit stabilen Anforderungen unnötiger Aufwand, während man bei LTS-Versionen über Jahre planbare Unterstützung hat.
Werkzeuge im JDK jenseits von javac
Ein vollständiges JDK bringt neben dem Compiler noch weitere Kommandozeilenwerkzeuge mit, die im Alltag häufig gebraucht werden: jar zum Bündeln kompilierter Klassen in eine ausführbare JAR-Datei, jshell als interaktive Java-Konsole zum schnellen Ausprobieren von Code-Schnipseln ohne komplettes Projekt-Setup, jdb als Kommandozeilen-Debugger, und javadoc zur automatischen Generierung von HTML-Dokumentation aus speziell formatierten Kommentaren im Quellcode.
Versionsverwaltung mit mehreren JDKs parallel
In der Praxis arbeiten Entwickler oft an mehreren Projekten mit unterschiedlichen Java-Versionsanforderungen gleichzeitig — ein Legacy-System läuft vielleicht noch auf Java 8, ein neues Projekt nutzt Java 21. Werkzeuge wie SDKMAN! (Linux/macOS) oder jenv erlauben es, mehrere JDK-Versionen parallel installiert zu halten und pro Projektverzeichnis oder Terminal-Sitzung gezielt zwischen ihnen umzuschalten, ohne die Systemumgebungsvariablen manuell anpassen zu müssen.
Modulsystem seit Java 9
Seit Java 9 unterstützt das JDK ein Modulsystem (Project Jigsaw), das es erlaubt, die Standardbibliothek und eigene Anwendungen in klar abgegrenzte Module mit expliziten Abhängigkeiten zu unterteilen, statt eines einzigen monolithischen Klassenpfads — das ermöglicht kleinere, maßgeschneiderte Laufzeitumgebungen (per jlink) und macht interne Implementierungsdetails der Standardbibliothek strikter kapselbar, was vorher ungewollt zugängliche interne APIs schloss.