Java SE 14 Veröffentlichung

Nach sechsmonatiger Entwicklung hat die Firma Oracle hat plattforms Java SE 14 (Java-Plattform, Standard-Edition 14), deren Referenzimplementierung das OpenJDK-Projekt ist. In Java SE 14 bleibt die RĂŒckwĂ€rtskompatibilitĂ€t mit frĂŒheren Versionen der Java-Plattform erhalten, alle zuvor geschriebenen Java-Projekte werden ohne Änderungen unter der neuen Version funktionieren. Fertige Installationsversionen von Java SE 14 (JDK, JRE und Server JRE) wurden vorbereitet fĂŒr Linux (x86_64), Windows und macOS. Die Referenzimplementierung wurde im Rahmen des OpenJDK-Projekts entwickelt Java 14 ist vollstĂ€ndig unter der GPLv2-Lizenz mit Ausnahmen von GNU ClassPath geöffnet, die dynamische Bindungen an kommerzielle Produkte erlauben.

Java SE 14 gehört zur Kategorie der Versionen mit regulĂ€rer UnterstĂŒtzung, Updates werden bis zur nĂ€chsten Veröffentlichung herausgegeben. FĂŒr die langfristige UnterstĂŒtzung (LTS) sollte Java SE 11 verwendet werden, Updates hierfĂŒr werden bis 2026 veröffentlicht. Die vorherige LTS-Version Java 8 wird bis Dezember 2020 unterstĂŒtzt. Die nĂ€chste LTS-Veröffentlichung ist fĂŒr September 2021 geplant. Es sei daran erinnert, dass mit der Veröffentlichung von Java 10 das Projekt auf einen neuen Entwicklungsprozess umgestiegen ist, der einen kĂŒrzeren Zyklus fĂŒr neue Releases vorsieht. Neue Funktionen werden jetzt in einer stĂ€ndig aktualisierten Master-Branch entwickelt, in die bereits fertige Änderungen einfließen, und von der alle sechs Monate Branches zur Stabilisierung neuer Versionen abgezweigt werden.

Aus Neuheiten Java 14 kann man vermerken:

  • Es wurde experimentelle UnterstĂŒtzung hinzugefĂŒgt Musterabgleich im Operator „instanceof“, der es ermöglicht, sofort eine lokale Variable zum Zugriff auf den geprĂŒften Wert zu definieren. Zum Beispiel kann man sofort schreiben „if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}“ ohne die explizite Definition „String s = (String) obj“.

    FrĂŒher:

    if (obj instanceof Group) {
    Group group = (Group) obj;
    var entries = group.getEntries();
    }

    Jetzt kann man auf die Definition „Group group = (Group) obj“ verzichten:

    if (obj instanceof Group group) {
    var entries = group.getEntries();
    }

  • Experimentelle UnterstĂŒtzung des neuen SchlĂŒsselworts „record“, das eine kompakte Form zur Definition von Klassen bereitstellt, die es ermöglicht, ohne explizite Definition verschiedener Low-Level-Methoden wie equals(), hashCode() und toString() auszukommen, wenn die Daten nur in Feldern gespeichert werden und das Verhalten im Umgang mit ihnen unverĂ€ndert bleibt. Wenn in der Klasse typisierte Implementierungen der Methoden equals(), hashCode() und toString() verwendet werden, kann auf deren explizite Definition verzichtet werden:

    public record BankTransaction(LocalDate date,
    double amount,
    String description) {}

    Diese AnkĂŒndigung fĂŒhrt automatisch zur Implementierung der Methoden equals(), hashCode() und toString() zusĂ€tzlich zum Konstruktor und den Methoden, die die DatenĂ€nderung steuern (Getter).

  • Standardisiert und standardmĂ€ĂŸig die UnterstĂŒtzung der neuen „switch“-Ausdrucksform hinzugefĂŒgt, die keinen „break“-Operator erfordert, die es ermöglicht, wiederholte Labels zu kombinieren und die nicht nur als Anweisung, sondern auch als Ausdruck verwendet werden kann.

    var log = switch (event) {
    case PLAY -> „Der Benutzer hat die Play-Taste betĂ€tigt“;
    case STOP, PAUSE -> „Der Benutzer benötigt eine Pause“;
    default -> {
    String message = event.toString();
    LocalDateTime now = LocalDateTime.now();
    yield „Unbekanntes Ereignis“ + message +
    „ geloggt am „ + now;
    }
    };

  • Erweiterte experimentelle UnterstĂŒtzung Textblöcke — der neuen Form von Textliteralen, die es ermöglichen, mehrzeilige Textdaten ohne Escape-Zeichen in den Quellcode einzufĂŒgen und die ursprĂŒngliche Formatierung des Textes im Block beizubehalten. Ein Block wird durch drei doppelte AnfĂŒhrungszeichen umschlossen. In Java 14 bieten Textblöcke UnterstĂŒtzung fĂŒr die Escape-Sequenz „\s“ zur Definition eines Leerzeichens und „\“ zur Verkettung mit der nĂ€chsten Zeile (Umgehung des Zeilenumbruchs, wenn eine sehr lange Zeile ausgegeben werden soll). Zum Beispiel statt des Codes

    String html = "<HTML>" +
    "\n\t" + "<BODY>" +
    „\n\t\t“ + „

    „Java 14 ist da!„

    “ +
    "\n\t" + "</BODY>" +
    "\n" + "</HTML>";

    es kann angegeben werden:

    String html = """
    <HTML>
    <BODY>

    „Java 14\
    ist da!"</H1>
    </BODY>
    </HTML>""";

  • Die Informationsgehaltsdiagnose wurde bei AusnahmefĂ€llen erweitert. NullPointerException. Wenn zuvor die Fehlermeldung lediglich auf die Zeilennummer verwies, wird jetzt detailliert beschrieben, welche Methode die Ausnahme verursacht hat. Die erweiterte Diagnostik kann derzeit nur beim Starten mit dem Flag „-XX:+ShowCodeDetailsInExceptionMessages“ aktiviert werden. Beispielsweise fĂŒhrt die Angabe dieses Flags zu einer Ausnahme in der Zeile

    var name = user.getLocation().getCity().getName();

    die die folgende Meldung ausgibt:

    Exception in thread „main“ java.lang.NullPointerException: Cannot invoke „Location.getCity()“
    weil der RĂŒckgabewert von „User.getLocation()“ null ist.
    at NullPointerExample.main(NullPointerExample.java:5):5)

    was es ermöglicht zu verstehen, dass die Methode Location.getCity() nicht aufgerufen wurde und User.getLocation() einen null-Wert zurĂŒckgegeben hat.

  • Implementiert eine Vorabversion des jpackage-Tools, das das Erstellen von Paketen fĂŒr eigenstĂ€ndige Java-Anwendungen ermöglicht. Das Werkzeug basiert auf javapackager aus JavaFX und ermöglicht die Erstellung von Paketen in Formaten, die fĂŒr verschiedene Plattformen typisch sind (msi und exe fĂŒr Windows, pkg und dmg fĂŒr macOS, deb und rpm fĂŒr Linux). Die Pakete enthalten alle erforderlichen AbhĂ€ngigkeiten.
  • Im Garbage Collector G1 wurde hinzugefĂŒgt ein neuer Speichermanagementmechanismus, der die spezifischen Anforderungen von großen Systemen, die die NUMA-Architektur verwenden, berĂŒcksichtigt. Der neue Speicherverteiler wird mit dem Flag „+XX:+UseNUMA“ aktiviert und ermöglicht eine erhebliche Leistungssteigerung auf NUMA-Systemen.
  • HinzugefĂŒgt API zur Echtzeitverfolgung von JFR-Ereignissen (JDK Flight Recorder), zum Beispiel zur Implementierung einer kontinuierlichen Überwachung.
  • HinzugefĂŒgt das Modul jdk.nio.mapmode, das neue Modi (READ_ONLY_SYNC, WRITE_ONLY_SYNC) fĂŒr die Erstellung von abgebildeten Byte-Puffern (MappedByteBuffer) anbietet, die auf nichtflĂŒchtigen Speicher (NVM) verweisen.
  • Implementiert eine Vorabversion der API Foreign-Memory Access, die es Java-Anwendungen ermöglicht, sicher und effizient auf Speicherbereiche außerhalb des Java-Heaps zuzugreifen, indem sie mit neuen Abstraktionen wie MemorySegment, MemoryAddress und MemoryLayout arbeiten.
  • Deklariert veraltete Ports fĂŒr das Betriebssystem Solaris und die SPARC-Prozessoren (Solaris/SPARC, Solaris/x64 und Linux/SPARC), mit der Absicht, diese Ports in Zukunft zu entfernen. Der Übergang der genannten Ports in den Status veraltet wird der Community ermöglichen, die Entwicklung neuer Funktionen fĂŒr OpenJDK zu beschleunigen, ohne Zeit mit der Wartung von Solaris- und SPARC-spezifischen Merkmalen zu verbringen.
  • Entfernt den Garbage Collector CMS (Concurrent Mark Sweep), der vor zwei Jahren als veraltet gekennzeichnet wurde und nicht mehr gewartet wird (der Garbage Collector G1 hat den CMS bereits ersetzt). DarĂŒber hinaus, angekĂŒndigt Veraltete Anwendung der Kombinationsalgorithmen fĂŒr die Garbage Collection ParallelScavenge und SerialOld (Start mit den Optionen „-XX:+UseParallelGC -XX:-UseParallelOldGC“).
  • Experimentelle UnterstĂŒtzung des Garbage Collectors ZGC (Z Garbage Collector) auf den Plattformen macOS und Windows (zuvor nur unter Linux unterstĂŒtzt). ZGC arbeitet im passiven Modus und minimiert so weit wie möglich die Verzögerungen durch die Garbage Collection (Die Stop-Zeit bei Verwendung von ZGC ĂŒbersteigt nicht 10 ms.) und kann sowohl mit kleinen als auch mit riesigen Heaps von mehreren Hundert Megabyte bis zu mehreren Terabyte arbeiten.
  • Entfernt Werkzeuge und API zum Komprimieren von JAR-Dateien unter Verwendung des Algorithmus Pack200.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster