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) – lange der De-facto-Standard, heute vor allem in bestehenden Systemen.
  • Java 11 (2018) – erstes LTS unter dem sechsmonatigen Release-Zyklus.
  • Java 17 (2021) – Vorgänger-LTS, in vielen Produktivsystemen noch im Einsatz.
  • Java 21 (2023) – weit verbreitete Vorgänger-LTS.
  • Java 25 (2025) – aktuelle 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–16, 18–20, 22–24
    Diese Versionen sind produktiv nutzbar, aber nur kurzfristig unterstützt.

JDK vs. JRE – und warum es heute meist 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): Enthält zusätzlich Compiler, Debugger und Entwicklungswerkzeuge.

Seit Java 9 gibt es mit dem Modul-System (Project Jigsaw) das Tool jlink. Damit lassen sich gezielt schlanke, anwendungsspezifische Laufzeitumgebungen bauen. Zusätzlich kann jpackage vollständige Installationspakete inklusive Java-Runtime erstellen – angepasst an Windows, macOS oder Linux.

Oracle stellt seit JDK 11 keine separate JRE mehr bereit. JDK 9 und 10 hatten noch eigene JRE-Images. Andere Distributoren (etwa Adoptium, Azul oder Linux-Pakete) liefern weiterhin JRE-Pakete.

Oracle JDK vs. OpenJDK

Die OpenJDK-Implementierung ist die offizielle Referenzimplementierung von Java. Oracle JDK basiert darauf. Der praktische Unterschied liegt vor allem in Lizenz und Support, nicht in der Sprachkompatibilität.

Unterschiede

Merkmal OpenJDK (verschiedene Builds) Oracle JDK
Herkunft Referenzimplementierung Build auf OpenJDK-Basis
Lizenz GPLv2 mit Classpath Exception Oracle No-Fee Terms oder kommerziell
Updates je nach Distributor (Oracle, Eclipse Adoptium, Azul, Amazon, …) von Oracle gepflegt
Support Community oder Vendor-Support kommerzieller Support möglich
Binary-Kompatibilität Ja Ja

Wer keine kommerzielle Oracle-Unterstützung benötigt, kann 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, G1 als Standard-GC
Java 10 Non-LTS März 2018 var für lokale Variablen
Java 11 LTS Sept 2018 HttpClient (final), JavaFX aus dem JDK ausgelagert, Flight Recorder
Java 12 Non-LTS März 2019 switch-Expressions (Preview)
Java 13 Non-LTS Sept 2019 Text Blocks (Preview)
Java 14 Non-LTS März 2020 Records (Preview), Pattern Matching für instanceof (Preview), Switch-Expressions (final)
Java 15 Non-LTS Sept 2020 Text Blocks (final), Sealed Classes (Preview)
Java 16 Non-LTS März 2021 Records und Pattern Matching für instanceof (final)
Java 17 LTS Sept 2021 Sealed Classes (final), Pattern Matching für switch (Preview)
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 weitere Previews zu Virtual Threads und Pattern Matching
Java 21 LTS Sept 2023 Virtual Threads (final), Record Patterns, Sequenced Collections; String Templates nur Preview
Java 22 Non-LTS März 2024 FFM-API (final), Stream Gatherers (Preview), Unnamed Patterns (Preview)
Java 23 Non-LTS Sept 2024 Markdown in JavaDoc (final), String Templates zurückgezogen, weitere Previews (Gatherers, Modul-Import, Primitive Types in Patterns)
Java 24 Non-LTS März 2025 Stream Gatherers und Class-File API (final), Virtual Threads ohne Pinning, Security Manager dauerhaft deaktiviert; Scoped Values / Structured Concurrency weiter Preview
Java 25 LTS Sept 2025 Scoped Values, Module-Import, Compact Source Files, Flexible Constructor Bodies (final)

Empfohlen für neue Projekte ist in der Regel die jeweils aktuelle LTS-Version – derzeit Java 25. Java 21 bleibt eine weit verbreitete Vorgänger-LTS.