Skip to main content
Entwickler Themen
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

1.1. Java Versionen

LTS- und Non-LTS-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 (Long-Term Support)

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.

Non-LTS-Versionen

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.

JDK vs. JRE – und warum es heute nur noch das JDK gibt

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.

Oracle JDK vs. OpenJDK

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.

Unterschiede

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.

Übersicht Java-Versionen ab Java 8

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.