
Java Entwickler Experte
Java als Programmiersprache bleibt weiterhin führend in den heutigen Technologietrends. Auch die aktuelle Version Java 23 mit zahlreichen Verbesserungen zeigt, dass durchdachte Planung sowie vorab festgelegte und eingehaltene Termine dazu beigetragen haben, dass Java mit ihrem Ökosystem für viele Entwickler weltweit zur bevorzugten Plattform für moderne Softwareentwicklung geworden ist.
In diesem Artikel erfährst du:
Überblick über die Verbesserungen der Programmiersprache Java (JEPs) der letzten 10 Jahre
Wie bei früheren Java-Versionen ist auch Java 23 das kollektive Ergebnis der Mitwirkenden, sowohl Einzelpersonen als auch Organisationen der OpenJDK-Gemeinschaft.
Die Anzahl der Änderungen in den JDK-Updates ist in den letzten Jahren weitgehend konstant geblieben (durchschnittlich etwa 10). Dies ist jedoch auf die regelmäßigen halbjährlichen Veröffentlichungen zurückzuführen, die trotz der relativ kurzen Vorlaufzeit von neuen Sprachfunktionen über kleine Verbesserungen bestehender Funktionen bis hin zu Fehlerbehebungen und Dokumentationsaktualisierungen reichen.
Jede Änderung für ein bestimmtes Ticket wird durch einen separaten Commit an das JDK Bug System Repository dargestellt. Interessanterweise wurden zwischen Java 11 und Java 23 28.724 Probleme gelöst. 20.450 (ca. 71%) wurden von Mitarbeitern von Oracle abgeschlossen, während 8.274 (ca. 29%) von einzelnen Java-Programmierern beigesteuert wurden, die entweder unabhängig oder für andere Organisationen arbeiteten.
Diese Änderung (JEP 455) beseitigt mehrere Einschränkungen, die bei der Verwendung von primitiven Typen im Mustervergleich bestehen. Code, der primitive Typen und Objekttypen behandelt, kann vereinfacht werden, wenn keine besonderen Änderungen erforderlich sind und beide Typen auf die gleiche Weise behandelt werden können. Erlaubt eine Instanz instanceof zu erlauben, Primitive zu akzeptieren, reduziert den Code für allgemeine Instanzen weiter, da er nun automatisch bedingte Überschreibungen behandeln kann – bei denen ein Wert überprüft werden muss, um sicherzustellen, dass er für den Zieltyp gültig ist.
JEP 476 – Ermöglicht es Entwicklern, alle vom Modul exportierten Pakete mit einem einzigen Befehl zu importieren. Dies vereinfacht die Wiederverwendung modularer Bibliotheken, ohne dass der importierte Code im Modul selbst enthalten sein muss. Mit dieser Funktion können Anfänger Drittanbieterbibliotheken und grundlegende Java-Klassen verwenden, ohne lernen zu müssen, wo sie sich in der Paket-Hierarchie befinden.
JEP 477 – Dies ermöglicht es Anfängern, ihre ersten Java-Programme zu schreiben, ohne zunächst die Funktionen für größere und komplexere Programme verstehen zu müssen. Einfache Programme können vereinfachte Deklarationen verwenden und bei Bedarf leicht mit fortgeschritteneren Funktionen erweitert werden. Erfahrene Entwickler können auch die Kürze des Schreibens kleiner Programme genießen.
JEP 482 – Durch die Möglichkeit, dass einige Befehle im Konstruktor vor dem expliziten Aufruf des Konstruktors, also super(…) oder this(…) erscheinen, erhalten Entwickler die Freiheit, das Verhalten von Konstruktoren besser auszudrücken. Das natürlichere Platzieren der Logik, das diese Funktionalität bietet, beseitigt die Notwendigkeit, Teile der Kontroll- und Initialisierungslogik in Hilfsmethoden oder Hilfskonstruktoren unterzubringen. Zum Beispiel kann ein Konstruktor nun Eingabewerte validieren, bevor der Konstruktor der Superklasse aufgerufen wird, wodurch er schnell fehlschlägt und so eine unnötige Instanziierung der Superklasse vermieden wird, falls die Argumente ungültig sind.
JEP 466 – Dieser JEP schlägt ein API zur Analyse, Generierung und Transformation von Java-Klassendateien vor, das dem Format folgt, das in der Spezifikation der Java Virtual Machine definiert ist. Wenn dieses API als Teil jeder Veröffentlichung bereitgestellt wird, soll es die Herausforderungen entschärfen, die durch den sechsmonatigen Release-Zyklus von Java entstehen, insbesondere für Frameworks, die Klassendateien verarbeiten und mit jeder neuen Version aktualisiert werden müssen, um neue Funktionen schnell zu übernehmen. Sobald diese Funktionalität implementiert ist, sollte sie das JDK selbst von seiner Abhängigkeit von der Drittanbieterbibliothek ASM befreien.
JEP 469 – ermöglicht es Java-Entwicklern, Vektorberechnungen auszudrücken, die sich zur Laufzeit zuverlässig in optimale Vektoranweisungen auf unterstützten CPU-Architekturen kompilieren lassen und dabei eine bessere Leistung erzielen als entsprechende Skalarberechnungen. Es gibt keine Unterschiede zur 7. Inkubation dieser Funktion in JDK 22. Es ist zu erwarten, dass diese API weiterhin als Inkubations-API zurückkehren wird, bestenfalls mit nur geringfügigen Änderungen, bis die notwendigen Funktionen aus dem Valhalla-Projekt verfügbar sind.
JEP 473 – Erweitert die Stream-API zur Unterstützung benutzerdefinierter Übergangsoperationen. Dadurch können Stream-Kanäle Daten auf eine Weise umwandeln, die mit den vorhandenen eingebauten Übergangsoperationen nicht ohne weiteres möglich ist. Stream-Collectors bieten die Flexibilität für Zwischenoperationen, die Collectors für Terminaloperationen ermöglichen. Mit dieser Erweiterung werden fünf integrierte Collectors eingeführt.
JEP 480 – Strukturierte Gleichzeitigkeit ermöglicht es Entwicklern, Gruppen von zusammenhängenden Aufträgen, die auf verschiedenen Threads laufen, als eine einzige Arbeitseinheit zu behandeln, was die Fehlerbehandlung und den Abbruch vereinfacht, die Zuverlässigkeit erhöht und die Beobachtbarkeit verbessert. Diese API unterstützt einen nebenläufigen Programmierstil, der die üblichen Risiken von Abbrüchen und Shutdowns, wie z.B. Thread-Leaks und Abbruchverzögerungen, eliminieren kann.
JEP 481 – ermöglicht es der Methode, unveränderliche Daten mit ihren Aufrufern sowohl innerhalb des Threads als auch mit Child-Threads zu teilen. Die Verwendung von Bereichswerten ist einfacher zu begründen als lokale Thread-Variablen. Sie haben auch geringere Platz- und Zeitkosten, insbesondere bei der Verwendung mit virtuellen Threads (JEP 444) und strukturierter Gleichzeitigkeit (JEP 480).
JEP 474 – schaltet den Standardmodus des Z Garbage Collectors (ZGC) auf den Generierungsmodus um. Rückmeldungen aus der Verwendung des mit JDK 21 eingeführten Generations-ZGC sowie interne Tests haben bestätigt, dass er in den meisten Anwendungsfällen deutlich besser funktioniert als der Nicht-Generations-ZGC. Dieses JEP verwirft auch den nicht-generativen ZGC-Modus mit der Absicht, ihn in einer zukünftigen Version des JDK zu entfernen.
JEP 467 – ermöglicht die Verwendung von Markdown anstelle einer Kombination aus HTML und Javadoc @-Tags zum Schreiben von Kommentaren in der Javadoc-Dokumentation. Das neue Format macht es einfacher, die Dokumentation im Quelltext zu lesen und zu verstehen.
JEP 471 – Mit der Einführung der fremden Funktions- und Speicher-API (JEP 454) in JDK 22 wurde eine unterstützte API für den effizienten Zugriff auf externen (fremden) Speicher bereitgestellt. Daher wurde die zukünftige Entfernung von Methoden in sun.misc.unsafe, die für den Zugriff auf fremden Speicher verwendet werden, angekündigt.
Hier finden Sie die Versionshinweise für Java JDK 23.
Java 23 bringt eine Reihe von Verbesserungen, die die Arbeit von Entwicklern vereinfachen und eine effizientere Nutzung der Plattform ermöglichen. Neue Funktionen wie Sprach-, Leistungs- und Tooling-Verbesserungen bestätigen einmal mehr, dass Java für viele Entwickler die bevorzugte Wahl ist. Neue Funktionen wie Sprach-, Leistungs- und Tooling-Verbesserungen bestätigen einmal mehr, dass Java für viele Entwickler die erste Wahl ist.
Wenn du ein Java Programmierer bist und nach Arbeit suchst, schau dir unsere Mitareiterbenefits an und reagiere auf die neuesten Stellenangebote.