Java SE 14 Verëffentlechung

No sechs Méint Entwécklung, Oracle entlooss Plattform JavaSE 14 (Java Plattform, Standard Edition 14), den Open-Source OpenJDK Projet gëtt als Referenzimplementatioun benotzt. Java SE 14 hält Réckkompatibilitéit mat fréiere Verëffentlechungen vun der Java Plattform; all virdru geschriwwe Java Projete funktionnéieren ouni Ännerungen wann se ënner der neier Versioun lancéiert ginn. Ready-to-install Java SE 14 Builds (JDK, JRE a Server JRE) virbereet fir Linux (x86_64), Windows a macOS. Referenz Implementatioun entwéckelt vum OpenJDK Projet Java 14 ass voll Open Source ënner der GPLv2 Lizenz, mat GNU ClassPath Ausnahmen déi dynamesch Verbindung mat kommerziellen Produkter erlaben.

Java SE 14 ass als allgemeng Support Verëffentlechung klasséiert a wäert weider Updates bis déi nächst Verëffentlechung kréien. D'Long Term Support (LTS) Branche soll Java SE 11 sinn, déi weider Updates bis 2026 kréien. Déi viregt LTS Filial vu Java 8 gëtt bis Dezember 2020 ënnerstëtzt. Déi nächst LTS Verëffentlechung ass geplangt fir September 2021. Loosst eis Iech drun erënneren datt ugefaang mat der Verëffentlechung vu Java 10, de Projet op en neien Entwécklungsprozess gewiesselt ass, wat e méi kuerzen Zyklus fir d'Bildung vun neie Verëffentlechungen implizéiert. Nei Funktionalitéit ass elo an enger stänneg aktualiséierter Master-Branche entwéckelt, déi fäerdeg Ännerunge enthält an aus deenen d'Branchen all sechs Méint verzweifelt ginn fir nei Verëffentlechungen ze stabiliséieren.

Vun Innovatiounen Java 14 kënnen Markéieren:

  • Zousätzlech experimentell Ënnerstëtzung Muster passend am "Instanceof" Bedreiwer, deen Iech erlaabt direkt eng lokal Variabel ze definéieren fir op de kontrolléierte Wäert ze kommen. Zum Beispill kënnt Dir direkt "wann (obj instanceof String s && s.length () > 5) {.. s.contains(..) ..}" schreiwen ouni explizit "String s = (String) obj" ze definéieren.

    Et war:

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

    Elo kënnt Dir ouni d'Definitioun "Grupp Grupp = (Grupp) obj" maachen:

    if (obj instance of group group) {
    var entries = group.getEntries();
    }

  • Zousätzlech experimentell Ënnerstëtzung fir dat neit Schlësselwuert "Rekord", déi eng kompakt Form ubitt fir Klassen ze definéieren, wat Iech erlaabt explizit verschidde Low-Level Methoden ze vermeiden wéi egal (), hashCode () an toString () a Fäll wou Daten nëmmen a Felder gespäichert sinn, deenen hir Verhalen net ännert. Wann eng Klass Standardimplementatioune vun de equals (), hashCode () an toString () Methoden benotzt, kann et ouni hir explizit Definitioun maachen:

    ëffentleche Rekord BankTransaktioun (LocalDate Datum,
    duebel Betrag
    String Beschreiwung) {}

    Dës Deklaratioun wäert automatesch Implementatioune vun den equals (), hashCode () an toString () Methoden zousätzlech zu de Konstruktor- a Getter Methoden addéieren.

  • Standardiséiert an Ënnerstëtzung fir eng nei Form vu "Schalter" Ausdréck ass par défaut aktivéiert, wat net de Bedreiwer "Paus" spezifizéiert erfuerdert, erlaabt Iech widderholl Etiketten ze kombinéieren a kënnen net nëmmen a Form vun engem Bedreiwer benotzt ginn, awer och als Bedreiwer. Ausdrock.

    var log = switch (Event) {
    Fall PLAY -> "De Benotzer huet de Play Button ausgeléist";
    Fall STOP, PAUSE -> "De Benotzer brauch eng Paus";
    default -> {
    String Message = event.toString();
    LocalDateTime now = LocalDateTime.now();
    erginn "Onbekannt Event" + Message +
    » ugemellt » + elo;
    }
    };

  • Erweidert experimentell Ënnerstëtzung Textblocken - eng nei Form vu String-Literaler déi Iech erlaabt Multi-Linn Textdaten am Quellcode opzehuelen ouni Zeechen ze entkommen an d'Original Textformatéierung am Block ze konservéieren. De Block gëtt vun dräi duebel Zitater encadréiert. Am Java 14 ënnerstëtzen Textblocken elo d'Escape-Sequenz "\s" fir en eenzege Raum ze definéieren an "\" fir mat der nächster Zeil ze verbannen (Ignoréiere vun Neilinnen wann Dir eng ganz laang Zeil drécke musst). Zum Beispill, amplaz Code

    String html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 ass hei!\" » +
    "\n\t" + " » +
    "\n" + " ";

    Dir kënnt uginn:

    String html = """


    »Java 1\
    ass hei!

    """;

  • Den Informatiounsinhalt vun der Diagnostik wann Ausnahmen optrieden ass erweidert ginn NullPointerException. Wou virdru d'Fehlermeldung nëmmen op d'Linnnummer bezeechent huet, elo Detailer wéi eng Method d'Ausnam verursaacht huet. Fortgeschratt Diagnostik ass am Moment nëmmen aktivéiert wann se mam Fändel "-XX:+ShowCodeDetailsInExceptionMessages" gestart ginn. Zum Beispill, wann Dir dëse Fändel spezifizéiert, d'Ausnam an der Linn

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

    wäert zu engem Message Resultat

    Ausnam am thread "main" java.lang.NullPointerException: Kann "Location.getCity()" net opruffen
    well de Retourwäert vun "User.getLocation()" null ass
    bei NullPointerExample.main(NullPointerExample.java:5):5)

    wat mécht et kloer, datt d'Location.getCity () Method net genannt gouf an User.getLocation () zréckginn null.

  • Ëmgesat Eng Virschau vum jpackage Utility, wat Iech erlaabt Packagen fir selbstänneg Java Uwendungen ze kreéieren. D'Utility baséiert op Javapackager vu JavaFX an erlaabt Iech Packagen a Formater gebierteg op verschidde Plattformen ze kreéieren (msi an exe fir Windows, pkg an dmg fir macOS, deb an rpm fir Linux). D'Packagen enthalen all erfuerderlech Ofhängegkeeten.
  • An de G1 Gerempels dobäigesat en neie Memory Allocation Mechanismus deen d'Spezifizitéite berücksichtegt fir op grousse Systemer mat der Architektur ze schaffen NUMA. Den neie Gedächtnisallokator ass aktivéiert mam Fändel "+XX:+UseNUMA" a kann d'Performance op NUMA Systemer wesentlech verbesseren.
  • Dobäigesat API fir on-the-fly Iwwerwaachung vu JFR (JDK Flight Recorder) Eventer, zum Beispill fir kontinuéierlech Iwwerwaachung ze organiséieren.
  • Dobäigesat jdk.nio.mapmode Modul, déi offréiert nei Modi (READ_ONLY_SYNC, WRITE_ONLY_SYNC) fir eng schafen Kaarte Byte Buffer (MappedByteBuffer) referenzéieren Net-flüchtege Erënnerung (NVM).
  • Ëmgesat Eng Virschau vun der Foreign-Memory Access API, erlaabt Java Uwendungen sécher an effizient Zougang zu Erënnerungsregiounen ausserhalb vum Java Heap ze kréien andeems se déi nei MemorySegment, MemoryAddress a MemoryLayout Abstraktiounen manipuléieren.
  • ugekënnegt ofgeschaaft Ports fir d'Solaris OS a SPARC Prozessoren (Solaris / SPARC, Solaris / x64 a Linux / SPARC) mat der Absicht dës Ports an Zukunft ze läschen. D'Deprecatioun vun dësen Ports erlaabt d'Gemeinschaft d'Entwécklung vun neien OpenJDK Features ze beschleunegen ouni Zäit ze verschwenden fir Solaris- a SPARC-spezifesch Funktiounen z'erhalen.
  • Geläscht der CMS (Concurrent Mark Sweep) Gerempels Sammelstécker, déi war virun zwee Joer obsolet markéiert a blouf unmaintained (CMS war laang virun der G1 Gerempels ersat). Ausserdeem, ugekënnegt d'Benotzung vun enger Kombinatioun vu ParallelScavenge a SerialOld Gerempels Sammelalgorithmen ofgeschaaft (mat den Optiounen "-XX:+UseParallelGC -XX:-UseParallelOldGC lafen").
  • Experimentell Ënnerstëtzung fir den ZGC (Z Garbage Collector) Müllsammler gouf op macOS a Windows Plattformen geliwwert (virdrun nëmmen op Linux ënnerstëtzt). ZGC bedreift am passive Modus, miniméiert d'Latenz wéinst Müllsammlung sou vill wéi méiglech (Stallzäit wann Dir ZGC benotzt net méi wéi 10 ms.) a ka mat béide klengen a grousse Koup schaffen, an der Gréisst vun e puer honnert Megabytes op vill Terabytes.
  • Geläscht Toolkit an API fir JAR Dateien ze kompriméieren mam Pack200 Algorithmus.

Source: opennet.ru

Setzt e Commentaire