1.1. Java Versionen
Seit Java 9 folgt die Weiterentwicklung von Java einem festen Veröffentlichungsrhythmus: Alle sechs Monate erscheint eine neue Java-Version. Dabei wird jedoch nicht jede Version langfristig unterstützt. Es gibt zwei Arten von Java-Versionen:
LTS-Versionen erhalten über mehrere Jahre hinweg Updates (Fehlerbehebungen und Sicherheitsupdates) und eignen sich für produktive Systeme, die Stabilität und langfristige Wartbarkeit benötigen. Bekannte LTS-Versionen sind:
- Java 8 (2014) – erstes modernes LTS, weit verbreitet.
- Java 11 (2018) – erstes LTS unter dem neuen Release-Zyklus.
- Java 17 (2021) – aktuelles Mainstream-LTS.
- Java 21 (2023) – neueste LTS-Version, empfohlen für neue Projekte.
Zwischen den LTS-Versionen erscheinen Non-LTS-Versionen, die nur für sechs Monate Updates erhalten. Sie sind vor allem für Entwickler interessant, die frühzeitig neue Features testen oder Feedback geben möchten. Beispiele:
- Java 9, 10, 12, 13, 14, 15, 16, 18, 19, 20, 22
Diese Versionen sind produktiv nutzbar, aber nur kurzfristig unterstützt.
Früher war Java in zwei Hauptvarianten erhältlich:
- JRE (Java Runtime Environment): Enthielt nur das zur Ausführung nötige Runtime-Environment.
- JDK (Java Development Kit): Beinhaltet zusätzlich Compiler, Debugger und Entwicklungswerkzeuge.
Seit Java 9 wurde mit dem Modul-System (Project Jigsaw) auch das Tool JLink eingeführt. Damit können gezielt schlanke, anwendungsspezifische Laufzeitumgebungen gebaut werden. Die Notwendigkeit eines separaten JRE entfällt.
Zusätzlich bietet JPackage die Möglichkeit, vollständige Installationspakete inklusive Java-Runtime zu erstellen – angepasst an Windows, macOS oder Linux.
Oracle liefert daher seit Java 9 keine separate JRE mehr aus.
Die OpenJDK-Implementierung ist die offizielle Referenzimplementierung von Java. Oracle JDK basiert auf OpenJDK, enthält jedoch ggf. zusätzliche (nicht-quelloffene) Komponenten oder Support-Leistungen.
Merkmal | OpenJDK | Oracle JDK |
---|---|---|
Lizenz | GPLv2 mit Classpath Exception | Oracle No-Fee Terms oder kommerziell |
Updates | Community-getrieben | Von Oracle gepflegt |
Support | Community | Kommerzieller Support möglich |
Binary-Kompatibilität | Ja | Ja |
Wer keine kommerzielle Unterstützung benötigt, kann ohne Einschränkungen auf OpenJDK-Distributionen wie Adoptium, Zulu oder Amazon Corretto zurückgreifen.
Version | Typ | Veröffentlichungsdatum | Wichtigste Neuerungen |
---|---|---|---|
Java 8 | LTS | März 2014 | Lambda-Ausdrücke, Streams, Optional, Date/Time API |
Java 9 | Non-LTS | Sept 2017 | Modul-System (JPMS), JShell, JLink |
Java 10 | Non-LTS | März 2018 | var für lokale Variablen |
Java 11 | LTS | Sept 2018 | HttpClient , Entfernen von JavaFX, Flight Recorder |
Java 12 | Non-LTS | März 2019 | switch (Preview), Compact Number Formatting |
Java 13 | Non-LTS | Sept 2019 | Text Blocks (Preview) |
Java 14 | Non-LTS | März 2020 | record (Preview), Pattern Matching (Preview) |
Java 15 | Non-LTS | Sept 2020 | Sealed Classes (Preview), Hidden Classes |
Java 16 | Non-LTS | März 2021 | Records und Pattern Matching als Final |
Java 17 | LTS | Sept 2021 | Sealed Classes (final), neue Garbage Collector-Optionen |
Java 18 | Non-LTS | März 2022 | Simple Web Server, UTF-8 als Standard-Encoding |
Java 19 | Non-LTS | Sept 2022 | Virtual Threads (Preview), Structured Concurrency (Preview) |
Java 20 | Non-LTS | März 2023 | Verbesserungen an Virtual Threads, Pattern Matching |
Java 21 | LTS | Sept 2023 | Virtual Threads (Final), Record Patterns, Sequenced Collections |
Java 22 | Non-LTS | März 2024 | Stream Gatherers, Classfile API, weitere Preview-Features |
Java 23 | Non-LTS | Sept 2024 | Primitive Types in Patterns, Markdown in JavaDoc, Modul-Import-Deklarationen (Preview), Scoped Values (3rd Preview), Structured Concurrency (3rd Preview), Stream Gatherers (2nd Preview) |
Java 24 | Non-LTS | März 2025 | Scoped Values, Strukturierte Nebenläufigkeit, Primitive Types in Patterns, Stream Gatherers, Class-File API, Neuerungen bei Virtual Threads (z. B. ohne Pinning), Entfernung des Security Managers, Vector API (weiterentwickelt) |
Empfohlen für neue Projekte ist in der Regel die jeweils aktuelle LTS-Version – derzeit Java 21.