Java 26: Neue Features im Überblick

Einführung

Am 17. März 2026 ist JDK 26 offiziell erschienen. Als Short-Term-Release folgt es auf Java 25 LTS und bringt eine ordentliche Portion an Neuerungen mit. Insgesamt 10 JEP-Features sind dabei — darunter einige, die den Alltag als Java-Entwickler deutlich angenehmer machen. Hier die wichtigsten Highlights.

Primitive Types in Patterns, instanceof und switch (JEP 530)

Pattern Matching wird weiter ausgebaut: Nach drei Preview-Runden in JDK 23, 24 und 25 ist die Unterstützung für primitive Datentypen nun in der vierten Preview. Das bedeutet, du kannst jetzt int, long, double und Co. direkt in Pattern-Contexts verwenden.

Beispiel:

switch (value) {
    case int i when i > 0  -> System.out.println("Positiv: " + i);
    case int i when i < 0  -> System.out.println("Negativ: " + i);
    case 0                  -> System.out.println("Null");
    default                 -> System.out.println("Unbekannt");
}

Kein Boxing mehr, keine umständlichen Integer-Wrapper — einfach sauber und performant mit primitiven Typen arbeiten.

Structured Concurrency (JEP 525)

Structured Concurrency ist mittlerweile in der sechsten Preview angekommen und wird langsam reif. Die Idee bleibt brillant: Mehrere Tasks werden als Einheit behandelt, was Fehlerbehandlung und Abbruchverhalten massiv vereinfacht.

Beispiel:

try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {
    var user = scope.fork(() -> fetchUser(id));
    var orders = scope.fork(() -> fetchOrders(id));

    scope.join();
    scope.throwIfFailed();

    return new UserData(user.resultNow(), orders.resultNow());
}

Fällt ein Task aus, werden automatisch alle anderen abgebrochen. Keine Thread-Leaks mehr, kein kompliziertes Lifecycle-Management. Strukturierte Concurrency, wie sie sein sollte.

HTTP/3 für die HTTP Client API (JEP 517)

Java bekommt nativen HTTP/3 Support. Die neue Version baut auf dem QUIC-Protokoll auf und bietet:

  • Geringere Latenz beim Verbindungsaufbau
  • Besseres Multiplexing ohne Head-of-Line-Blocking
  • Nahtlose Migration bei Netzwerkwechseln

Du musst deinen Code kaum anpassen. HTTP/3 kann opt-in aktiviert werden, ohne das bestehende API-Design zu brechen.

var client = HttpClient.newBuilder()
    .version(HttpClient.Version.HTTP_3)
    .build();

Ahead-of-Time Object Caching (JEP 516)

Project Leyden macht Fortschritte: Mit AOT Object Caching kann der HotSpot JVM gecachte Java-Objekte nun in ein GC-agnostisches Format serialisieren und laden. Das funktioniert mit jedem Garbage Collector — auch mit dem Low-Latency ZGC.

Was das bringt:

  • Schnellere Startzeiten
  • Kürzeres Warmup
  • Flexiblere GC-Wahl für AOT-kompilierte Anwendungen

Lazy Constants (JEP 526)

Lazy Constants sind Objekte, die unveränderliche Daten halten und vom JVM wie echte Konstanten behandelt werden — analog zu final-Feldern, aber mit flexiblerer Initialisierungszeit. In der zweiten Preview nach Java 25 reifen sie weiter heran.

Beispiel:

var EXPENSIVE_DATA = LazyConstant.of(() -> computeExpensiveData());

Die Initialisierung passiert erst beim ersten Zugriff, danach wird der Wert effizient geteilt — besonders nützlich für KI-Anwendungen mit großen Konstanten-Tabellen.

G1 GC: Besserer Throughput (JEP 522)

Der G1 Garbage Collector, Standard in der HotSpot JVM, bekommt ein Performance-Upgrade. Durch reduzierte Synchronisation zwischen Application- und GC-Threads wird der Throughput verbessert, ohne die Latenz-Eigenschaften von G1 zu opfern.

Wer bisher wegen Performance-Überlegungen zum Parallel GC gewechselt hat, sollte G1 nach diesem Update nochmal testen.

Vector API (JEP 529)

Die Vector API erreicht ihre elfte Inkubation — seit JDK 16 wird hier optimiert. Sie ermöglicht es, Vektor-Berechnungen zu schreiben, die zur Laufzeit zu optimalen CPU-Instructions kompiliert werden. Das bringt massive Performance-Gewinne bei datenintensiven Operationen, insbesondere in der KI-Verarbeitung.

Weitere Änderungen

Neben den großen Features gibt es noch ein paar Kleinigkeiten:

  • Final Fields werden ernst genommen (JEP 500): Warnungen vor Deep-Reflection auf final-Felder, um auf zukünftige Einschränkungen vorzubereiten. final soll wirklich final bedeuten.
  • PEM Encodings (JEP 524): API für kryptografische Objekte im PEM-Format, zweite Preview mit verbessertem API-Design.
  • Applet API entfernt (JEP 504): Der Abschied von einer API, die niemand mehr braucht.
  • Virtual Threads: Verbessertes Unmounting-Verhalten bei Warten auf Class-Initializer.
  • Hybrid Public Key Encryption und erweiterte jlink-Versionsprüfung als kleinere Ergänzungen.

Fazit

Java 26 ist ein solider Release, der vor allem bei Entwickler-Produktivität punktet. HTTP/3 ist ein lange ersehntes Feature, und mit den Fortschritten bei Structured Concurrency und Pattern Matching wird Java zunehmend moderner und ausdrucksstärker.

Die optimierte GC-Performance und AOT-Object Caching zeigen, dass Oracle die JVM-Infrastruktur weiterentwickelt. Wer auf Java 25 LTS sitzt, verpasst bei JDK 26 nichts Essenzielles — aber es lohnt sich, die Preview-Features im Blick zu behalten, da viele davon für Java 27 oder spätere LTS-Releases finalisiert werden könnten.