Wichtige Entwicklungsschritte seit 1.0
Dieser Text wurde von ChatGPT 5.0 erstellt und von mir leicht überarbeitet.
Die folgende Übersicht bündelt nur die großen, praxisrelevanten Sprünge in der Java‑Entwicklung. Details zu Kleinstversionen sind bewusst weggelassen. Wichtig: Seit 2017 erscheint Java im 6‑Monats‑Rhythmus; langfristig unterstützte Versionen heißen LTS (Long‑Term Support).
Java 1 (1996–1997): Ausgangspunkt
- Grundmodell aus Klassen, Objekten und Exceptions; einfache Bibliotheken (I/O, Netzwerk, AWT).
- Konzept „Write once, run anywhere“: Bytecode auf der JVM.
Java 2 (1998): Collections & moderne GUI
- Collections Framework (z. B. ArrayList, HashMap) als Standard für Datenstrukturen.
- Swing als plattformunabhängiges GUI‑Toolkit.
Java 5 (2004): Typsicherheit & Produktivität
- Generics für typsichere Collections (ArrayList<String>).
- Annotationen (@Override), Enums, for‑each, Autoboxing, Varargs.
Java 7 (2011): Moderner Sprachbaukasten & Dateien
- try‑with‑resources (automatisches Schließen von Ressourcen).
- NIO.2 (java.nio.file) für robustes Datei‑ und Pfad‑Handling.
- „Diamond‑Operator“ (<>) und switch auf String.
Java 8 (2014): Funktionale Elemente
- Lambdas und Streams für deklaratives Arbeiten mit Datenfolgen.
- java.time (neue, saubere Datum‑/Zeit‑API) statt Date/Calendar.
- Default‑Methoden in Interfaces (interface mit Standard‑Implementierung).
Java 9 (2017): Modulsystem & Tooling
- JPMS (Java Platform Module System) für klare Modulgrenzen in großen Projekten.
- JShell (interaktive REPL) zum schnellen Ausprobieren von Code.
Java 10–11 (2018, 11 = LTS): Alltagsqualität
- var für lokale Typinferenz (lesbarer, aber weiterhin statisch typisiert).
- HttpClient (modernes HTTP/2‑API) und praktische neue Methoden in String/Files.
- LTS 11 wird viele Jahre unterstützt und ist in Unternehmen weit verbreitet.
Java 14 (2020): Ausdrucksstarkes switch
- Switch‑Expressions: switch kann nun einen Wert liefern (kürzer, weniger Fehlerquellen).
Java 16–17 (2021, 17 = LTS): Schlanke Datenträger & bessere Typabfragen
- Records (z. B. record Punkt(int x, int y)) für kompakte, unveränderliche Datenklassen.
- Pattern Matching für instanceof (weniger Casting‑Boilerplate).
- Sealed Classes zur kontrollierten Vererbungshierarchie.
- LTS 17 als moderner, langfristig stabiler Ausgangspunkt.
Java 21 (2023, LTS): Skalierung und moderne Muster
- Virtual Threads (Project Loom): sehr viele leichtgewichtige Threads für einfache, skalierbare Nebenläufigkeit.
- Pattern Matching weiter ausgebaut (u. a. für switch) für klarere Verzweigungen.
- Sequenced Collections: einheitliche Sicht auf Reihenfolge in Listen, Sets und Maps.
- LTS 21 ist aktuell ein zukunftssicherer Standard für neue Projekte.
Seit 2017: Neuer Release‑Zyklus
- Alle 6 Monate eine neue Version, alle paar Jahre eine LTS.
- Praxisempfehlung: Für Ausbildungs‑ und Produktivsysteme bevorzugt eine LTS einsetzen (z. B. 17 oder 21).
Zum Diamant-Operator
Zum Thema Generics und Diamant-Operator gibt es in dem ChatGPT-Text vielleicht ein paar Unklarheiten. Daher hier noch einmal ganz klar:
Generics wurden mit Java 5 eingeführt (2004). Damit konnte man beispielsweise schreiben
List<String> liste = new ArrayList<String>();
Man musste die Typangabe <String> also sowohl in der Deklaration wie auch in der Initialisierung des Objekts liste schreiben.
Seite Java 7 gibt es den Diamant-Operator <>, der nun Folgendes erlaubt:
List<String> liste = new ArrayList<>();
Man muss den Typ bei der Initialisierung also nicht mehr explizit hinschreiben, sondern es reicht, wenn man die Diamant-Operator <> angibt.
Zu den Long-Term-Support-Versionen (LTS)
Für den Java-Einstieg ist es eigentlich egal, welche Java-Version sich auf Ihrem Rechner befindet, solange es nicht gerade eine Uralt-Version ist. In unserer Erstsemester-Vorlesung reicht Java 7 völlig aus, die neueren Sprachelemente werden erst in den höheren Semsetern behandelt.
Hier ein aufschlussreiches Zitat aus dem Buch "Java - Der Grundkurs" von Michael Kofler (2022):
"Ein wenig anders sieht die Lage für professionelle Entwicklungsteams aus. Auf Servern oder in Smartphones ist es unüblich, jeden Versionswechsel mitzumachen. Das verursacht viel Arbeit und womöglich auch Stabilitätsprobleme. Deswegen gibt es alle paar Jahre besondere Java-Versionen mit Long-Term Support (LTS). Die Besonderheit derartiger LTS-Versionen besteht darin, dass sie über einen langen Zeitraum mit Sicherheits-Updates und Fehlerbehebungen (Bugfixes) versorgt werden und somit jahrelang produktiv genutzt werden können."