Veröffentlichung von Java SE 19

Nach sechs Monaten Entwicklung hat die Firma Oracle die Plattform Java SE 19 (Java Platform, Standard Edition 19) veröffentlicht, deren Referenzimplementierung auf dem offenen Projekt OpenJDK basiert. Abgesehen von der Eliminierung einiger veralteter Funktionen bleibt die Abwärtskompatibilität zu vorherigen Versionen der Java-Plattform in Java SE 19 gewahrt – die meisten früher geschriebenen Java-Projekte werden ohne Änderungen unter der neuen Version lauffähig sein. Die Installationspakete für Java SE 19 (JDK, JRE und Server JRE) sind für Linux (x86_64, AArch64), Windows (x86_64) und macOS (x86_64, AArch64) vorbereitet. Die im Rahmen des OpenJDK-Projekts entwickelte Referenzimplementierung von Java 19 ist vollständig unter der GPLv2-Lizenz mit Ausnahmen für GNU ClassPath, die die dynamische Verknüpfung mit kommerziellen Produkten ermöglichen.

Java SE 19 gehört zur Kategorie der regulären Veröffentlichungen, für die Updates bis zur nächsten Version bereitgestellt werden. Als Long-Term Support (LTS) sollte Java SE 17 verwendet werden, für das Updates bis zum Jahr 2029 bereitgestellt werden. Erinnern wir uns daran, dass seit der Veröffentlichung von Java 10 das Projekt auf einen neuen Entwicklungsprozess umgestiegen ist, der einen kürzeren Zyklus bei der Erstellung neuer Releases vorsieht. Neue Funktionalitäten werden jetzt in einem ständig aktualisierten Master-Branch entwickelt, in den bereits fertige Änderungen aufgenommen werden und von dem alle sechs Monate Branches zur Stabilisierung neuer Releases abgezweigt werden.

Zu den Neuerungen in Java 19 gehören:

  • Vorgeschlagene vorläufige Unterstützung für Record-Pattern, die die in Java 16 eingeführte Möglichkeit zur Mustererkennung mit Mitteln zur Analyse von Werten der Record-Klasse erweitert. Zum Beispiel: record Point(int x, int y) {} void printSum(Object o) { if (o instanceof Point(int x, int y)) { System.out.println(x+y); } }
  • In den Paketen für Linux wird Unterstützung für die RISC-V-Architektur bereitgestellt.
  • Vorläufige Unterstützung für die FFM-API (Foreign Function & Memory) wurde hinzugefügt, die es ermöglicht, die Interaktion von Java-Programmen mit externem Code und Daten über den Aufruf von Funktionen aus externen Bibliotheken und den Zugriff auf Speicher außerhalb der JVM zu organisieren.
  • Die Unterstützung für virtuelle Threads wurde hinzugefügt, die leichte Threads darstellen und das Schreiben und Warten von leistungsstarken Multithread-Anwendungen erheblich vereinfachen.
  • Die vierte vorläufige Implementierung der Vector-API wurde vorgeschlagen, die Funktionen für Vektorrechnungen bereitstellt, die unter Verwendung von Vektorbefehlen von x86_64- und AArch64-Prozessoren ausgeführt werden und gleichzeitig Operationen auf mehreren Werten (SIMD) anwenden können. Im Gegensatz zu den Auto-Vektorisierungsfunktionen für skalare Operationen, die im JIT-Compiler HotSpot bereitgestellt werden, ermöglicht die neue API eine explizite Steuerung der Vektorisierung zur parallelen Datenverarbeitung.
  • Eine dritte experimentelle Implementierung des Mustervergleichs in 'switch'-Ausdrücken wurde hinzugefügt, die es ermöglicht, in 'case'-Kennzeichnungen flexible Muster zu verwenden, die mehrere Werte abdecken, für die früher umständliche 'if...else'-Ausdrücke erforderlich waren. Object o = 123L; String formatted = switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); default -> o.toString(); };
  • Eine experimentelle API für strukturierten Parallelismus wurde hinzugefügt, die die Entwicklung multithreaded Anwendungen erleichtert, indem sie mehrere Aufgaben, die in verschiedenen Threads ausgeführt werden, als einen einzigen Block behandelt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4