Blog | Employees, technology, business, news, events | Mimacom

Erfahren Sie, was in Java 25 neu ist, was sich geändert hat und warum das wichtig ist.

Geschrieben von Pablo Riesgo Gutiérrez | 09.04.2026 10:00:00

Bei den jüngsten Versionen von Java geht es nicht um eine Neuerfindung. Es geht um disziplinierte Verfeinerung. Mit JDK 23 und dem neuen Long-Term Support (LTS)-Release, JDK 25, reduziert die Plattform systematisch langjährige Reibungsverluste in den Bereichen Parallelität, Leistung, Speicherverwaltung und Entwicklerergonomie, ohne die Stabilität zu beeinträchtigen, auf die Unternehmensteams angewiesen sind.

 

Wichtigste Erkenntnisse

  • Java 23 und 25 konzentrieren sich auf stetige Verbesserungen, nicht auf eine umfassende Neuerfindung.
  • Die Gleichzeitigkeit wird einfacher zu verwalten und in realen Systemen besser vorhersehbar.
  • Leistungssteigerungen ergeben sich aus besseren Standardeinstellungen, nicht aus manuellen Anpassungen.
  • Die Speichernutzung und die Startzeiten verbessern sich, insbesondere bei Cloud-Workloads.
  • Der Code wird einfacher zu schreiben und im Laufe der Zeit zu warten.
  • Die Beobachtbarkeit ist jetzt eingebaut, wodurch Produktionsprobleme leichter zu verstehen sind.
  • Java 25 LTS ist für die meisten Teams der richtige Zeitpunkt für ein Upgrade.

Die Richtung dieser neuen Versionen ist einheitlich: weniger Textbausteine, mehr Klarheit und sicherere, einfachere Gleichzeitigkeit. Obwohl die Änderungen für sich genommen nur schrittweise erfolgen, definieren sie zusammen die Basis der Plattform neu. Java ist standardmässig schlanker in der Syntax, disziplinierter in der Gleichzeitigkeit und effizienter zur Laufzeit.

JDK 25 ist nicht einfach ein weiteres LTS. Es ist der Standard, auf dem ernsthafte Java-Teams als nächstes aufbauen werden. Schauen wir uns einmal an, was das in der Praxis bedeutet.

Gleichzeitigkeit für echte Arbeitslasten, keine Thread-Verwaltung

  • Verarbeiten Sie mehrere Aufgaben als eine Einheit, anstatt mit einzelnen Threads zu jonglieren.
  • Es ist einfacher, alles zu stoppen, wenn etwas fehlschlägt, und es ist ein sicherer Weg, um Daten zwischen Aufgaben zu teilen.
  • Komplexe Backend-Prozesse lassen sich leichter nachvollziehen.

Jahrelang bedeutete Gleichzeitigkeit in Java, Threads, Futures, Pools und Abbruchlogik manuell zu verwalten. Das funktionierte, aber es erforderte Disziplin.

Strukturierte Gleichzeitigkeit ändert das Modell. Die parallele Arbeit wird neu gestaltet, indem eine Gruppe von Aufgaben als eine logische Operation behandelt wird. Anstatt unabhängige Threads zusammenzufügen, definieren die Entwickler eine einzige Arbeitseinheit mit gemeinsamen Lebenszyklus- und Fehlersemantiken. In der Praxis wird dies bei Diensten kritisch, die mehrere nachgelagerte Aufrufe orchestrieren, z. B. die Zusammenfassung von Daten aus mehreren APIs in einer einzigen Antwort. Anstatt Zeitüberschreitungen, Abbrüche und Teilausfälle manuell zu koordinieren, können Teams den gesamten Fluss kohärent modellieren.

Scoped Values bauen darauf auf, indem sie das bieten, was im Originalartikel als "leichtere, sicherere Alternative zu ThreadLocal" beschrieben wird. In asynchronen Systemen, in denen die Weitergabe von Kontexten oft anfällig ist, reduziert dies das Risiko von Lecks und versteckten Abhängigkeiten. Das Ergebnis ist nicht nur ein sauberer Code, sondern auch ein System, das sich unter Stress vorhersehbarer verhält.

Eine Leistung, die auch unter realer Belastung hält

  • Schnelleres Starten, insbesondere bei Cloud- und Microservices mit weniger Speicher unter der Haube.
  • Weniger Verlangsamungen bei hoher Arbeitslast.
  • Weniger Bedarf an manueller Leistungsoptimierung.

Die Extraktion der Leistung aus der JVM erforderte früher eine gezielte Abstimmung, doch mit den neuesten Versionen wird diese Verantwortung stärker auf die Plattform selbst verlagert. JDK 25 verbessert die Start- und Aufwärmphase durch Ahead-of-Time-Methodenprofilierung, die es der JVM ermöglicht, sich auf der Grundlage früherer Ausführungen anzupassen. Die Startzeit ist wichtig - insbesondere bei Systemen, die häufig initialisiert werden oder schnell auf wechselnde Lastbedingungen reagieren müssen.

Andere Verbesserungen finden auf einer niedrigeren Ebene statt, haben aber echte Auswirkungen. Kompakte Objekt-Header reduzieren den Speicherbedarf bei großen Objektgraphen. Generative Garbage Collectors wie ZGC und Shenandoah verringern weiterhin die Pausenzeiten bei gleichbleibendem Durchsatz.

Für sich genommen sind dies kleine Änderungen mit grosser Wirkung. In Systemen mit hohem Durchsatz, wie z. B. ereignisgesteuerten Pipelines oder datenintensiven Diensten, summieren sich diese Effizienzsteigerungen schnell. Bei der Leistung geht es weniger um die Optimierung von Randfällen als vielmehr darum, sich auf solide Standardeinstellungen zu verlassen.

Sauberer Code in grossen, langlebigen Codebasen

  • Weniger sich wiederholender Einrichtungscode für einfache Programme
  • Besser lesbare Möglichkeiten für den Umgang mit verschiedenen Datentypen
  • Einfachere Wartung grosser Codebasen im Laufe der Zeit

Java wurde lange Zeit mit Ausführlichkeit in Verbindung gebracht. Die neuesten Versionen gehen diesen Ruf direkt an, ohne die Übersichtlichkeit zu beeinträchtigen.

Kompakte Quelldateien reduzieren den Ballast für kleinere Programme und Skripte, während flexible Konstruktorkörper die Validierungslogik dort unterbringen, wo sie hingehört, anstatt Workarounds zu erzwingen. Der Musterabgleich entwickelt sich weiter und macht die Typbehandlung ausdrucksstärker und konsistenter.

Dies sind keine dramatischen Veränderungen. Ihre Auswirkungen zeigen sich erst im Laufe der Zeit, insbesondere bei grossen, langlebigen Codebasen. Domänenmodelle lassen sich leichter ausdrücken, und die Validierung wird expliziter. Das greifbare Ergebnis ist, dass neue Entwickler weniger Zeit damit verbringen, sich in der Struktur zurechtzufinden und mehr Zeit damit, die Absicht zu verstehen.

Beobachtbarkeit wird zu einer eingebauten Stärke

  • Bessere integrierte Tools, um zu sehen, was Ihre Anwendung tut.
  • Es ist einfacher, Leistungsprobleme zu erkennen und mehr Einblick in Probleme zu bekommen, die erst in der Produktion auftreten.
  • Weniger Rätselraten bei der Fehlersuche.

Produktionssysteme erfordern Sichtbarkeit. Beobachtbarkeit ist nicht länger etwas, das auf die JVM aufgesetzt wird, sondern wird zunehmend Teil ihres Kerns. Das heisst, dass es bei der Beobachtbarkeit nicht nur um Metriken geht, sondern um Einblicke in das Laufzeitverhalten.

Java Flight Recorder wird ständig weiterentwickelt und bietet genauere CPU-Profiling-, verbesserte Sampling- und bessere Tracing-Funktionen. Das Ergebnis ist ein besserer Einblick in die Anwendungsleistung, insbesondere in Umgebungen, in denen Probleme nur unter echter Last auftreten.

Dies ist besonders nützlich bei Problemen, die nur in der Produktion auftreten. So lassen sich z. B. intermittierende Latenzspitzen in einem Live-Service beim Testen nur schwer reproduzieren. Mit der verbesserten Beobachtbarkeit können Teams analysieren, was in Echtzeit passiert, ohne die Bedingungen an anderer Stelle nachstellen zu müssen.

Was dies alles für Teams bedeutet

Für Entwickler sind die Auswirkungen unmittelbar spürbar: klarere Gleichzeitigkeitsmodelle, weniger Textbausteine und ein besser vorhersehbares Laufzeitverhalten. Für Entscheider kumulieren sich die Vorteile im Laufe der Zeit: weniger Probleme im Zusammenhang mit der Gleichzeitigkeit, weniger Aufwand für die Leistungsoptimierung und Codebasen, die einfacher zu warten und weiterzuentwickeln sind.

Bei der Einführung von Java 25 geht es weniger um den Zugriff auf neue Funktionen, sondern vielmehr darum, Reibungsverluste beim Aufbau und Betrieb von Systemen zu beseitigen. Gleichzeitigkeit wird einfacher zu strukturieren. Die Leistung wird unter Last konsistenter. Die Beobachtbarkeit wird in der Produktion leichter zugänglich. Der Code ist im Laufe der Zeit leichter zu pflegen.

Java 25 definiert die Sprache nicht neu - es verfeinert ihr Verhalten in realen Systemen.