Java SE 16 Verëffentlechung

No sechs Méint Entwécklung huet Oracle Java SE 16 (Java Plattform, Standard Edition 16) verëffentlecht, déi den Open-Source OpenJDK Projet als Referenzimplementatioun benotzt. Java SE 16 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 Builds vu Java SE 16 (JDK, JRE a Server JRE) si fir Linux (x86_64, AArch64), Windows a macOS virbereet. Entwéckelt vum OpenJDK Projet, d'Java 16 Referenz Implementatioun ass voll Open Source ënner der GPLv2 Lizenz, mat GNU ClassPath Ausnahmen déi dynamesch Verbindung mat kommerziellen Produkter erlaben.

Java SE 16 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 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.

Als Virbereedung fir déi nei Verëffentlechung ass d'Entwécklung vum Mercurial Versiounskontrollsystem op Git an d'GitHub kollaborativ Entwécklungsplattform geplënnert. D'Migratioun gëtt erwaart d'Performance vun de Repository Operatiounen ze verbesseren, d'Späichereffizienz ze erhéijen, Zougang zu Ännerungen duerch d'Geschicht vum Projet ze bidden, d'Ënnerstëtzung fir d'Code review ze verbesseren an d'APIs z'erméiglechen Workflows ze automatiséieren. Zousätzlech mécht d'Benotzung vu Git a GitHub de Projet méi attraktiv fir Ufänger an Entwéckler, déi mam Git gewinnt sinn.

Nei Features am Java 16 enthalen:

  • Zousätzlech experimentell Modul jdk.incubator.vector mat enger Implementatioun vun der Vector API, déi Funktiounen fir Vecteure Berechnungen ubitt, déi mat Vektorinstruktiounen op x86_64 an AArch64 Prozessoren ausgefouert ginn an et erlaben Operatiounen gläichzäiteg op verschidde Wäerter (SIMD) applizéiert ze ginn. Am Géigesaz zu de Fäegkeeten, déi am HotSpot JIT Compiler fir Autovektoriséierung vu scalar Operatiounen zur Verfügung gestallt ginn, erlaabt déi nei API Iech explizit Vektoriséierung fir parallel Datenveraarbechtung ze kontrolléieren.
  • JDK a VM HotSpot Code geschriwwen an C ++ ass erlaabt Features ze benotzen, déi an der C ++ 14 Spezifizéierung agefouert goufen. Virdrun war C ++ 98/03 Standarden erlaabt.
  • Den ZGC (Z Garbage Collector), deen am passive Modus operéiert an d'Verzögerungen wéinst der Müllsammlung sou vill wéi méiglech miniméiert, huet d'Fäegkeet bäigefüügt fir threadstack parallel ze verarbeiten ouni d'Applikatiounsfäegkeeten ze pausen. Den ZGC huet elo nëmmen Aarbecht déi Suspension erfuerdert, déi konstant Verspéidungen huet, normalerweis net méi wéi e puer honnert Mikrosekonnen.
  • Zousätzlech Ënnerstëtzung fir Unix Sockets (AF_UNIX) op d'SocketChannel, ServerSocketChannel an java.nio.channels Klassen.
  • E Port gouf fir d'Linux Verdeelung Alpine mat der Standard C Bibliothéik musl implementéiert, déi populär ass an Ëmfeld fir Container, Mikroservicer, Cloud an Embedded Systemer. De proposéierte Port an esou Ëmfeld erlaabt Iech Java Programmer wéi normal Uwendungen ze lafen. Zousätzlech, mat jlink, kënnt Dir all onbenotzt Moduler ewechhuelen an e minimalt Ëmfeld erstellen fir d'Applikatioun ze lafen, wat Iech erlaabt Applikatiounspezifesch kompakt Biller ze kreéieren.
  • Den Elastic Metaspace Mechanismus gouf implementéiert, optiméiert d'Operatiounen fir d'Allocatioun an d'Retour vun Erënnerung besat vu Klasse Metadaten (Metaspace) am JVM HotSpot. D'Benotzung vun Elastic Metaspace reduzéiert Erënnerung Fragmentatioun, reduzéiert Klass loader Overhead, an huet och e positiven Effekt op d'Performance vun laang lafen Server Uwendungen wéinst méi séier Retour vun Erënnerung besat vun onbenotzt Klass Metadaten op de Betribssystem. Fir de Memory Release Modus no der Ausluede vun de Klassen ze wielen, gëtt d'Optioun "-XX:MetaspaceReclaimPolicy=(equilibréiert|aggressiv|none)" ugebueden.
  • E JDK Hafen gouf bäigefüügt fir Windows Systemer déi op Hardware lafen mat Prozessoren baséiert op der AArch64 Architektur.
  • Eng drëtt Virschau vun der Foreign-Memory Access API gouf proposéiert, wat Java Uwendungen erlaabt 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.
  • En experimentellen Foreign Linker API gouf implementéiert, deen Zougang vu Java op gebierteg Code ubitt. Zesumme mat der Foreign-Memory API mécht déi nei Programméierungs-Interface et vill méi einfach Wrapper iwwer konventionell gemeinsame Bibliothéiken ze kreéieren.
  • D'jpackage Utility bäigefüügt, 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.
  • Strikt Encapsulation vun all JDK-Intern ass als Standard aktivéiert, mat Ausnam vu kriteschen APIen wéi sun.misc.Unsafe. De Wäert vun der "--illegal-Access" Optioun ass elo op "verleegnen" amplaz vun "Erlaabnes" als Standard gesat, wat Versuche vum Code blockéiert fir Zougang zu de meescht intern Klassen, Methoden a Felder ze kréien. Fir d'Restriktioun ëmzegoen, benotzt d'Optioun "-illegal-access=permit".
  • D'Ëmsetzung vum Mustermatching am "Instanceof" Bedreiwer gouf stabiliséiert, wat Iech erlaabt direkt eng lokal Variabel ze definéieren fir op de kontrolléierte Wäert ze referenzéieren. 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. War: wann (obj instanceof Group) { Group group = (Grupp) obj; var entries = group.getEntries(); } Elo kënnt Dir maachen ouni "Grupp Grupp = (Grupp) obj" ze definéieren: wann (obj instanceof Grupp Grupp) { var entries = group.getEntries (); }
  • D'Ëmsetzung vum Schlësselwuert "Rekord" gouf stabiliséiert, a bitt eng kompakt Form fir Klassendefinitiounen, déi d'Noutwennegkeet eliminéiert fir verschidde Low-Level Methoden explizit ze definéieren wéi gläich (), hashCode () an toString () a Fäll wou Daten gespäichert ginn. nëmmen op Felder.mat deenen et net ännert. Wann eng Klass Standard Implementatioune vun den Equiliber (), hashCode () an toString () Methoden benotzt, kann et ouni hir explizit Definitioun maachen: ëffentlech Rekord BankTransaction (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.

  • En zweeten Entworf gëtt fir versiegelte Klassen an Interfaces proposéiert déi net vun anere Klassen an Interfaces benotzt kënne ginn fir Implementatiounen ze ierwen, ze verlängeren oder ze iwwerschreiden. Versiegelte Klassen bidden och e méi deklarativen Wee fir d'Benotzung vun enger Superklass ze beschränken wéi Zougangsmodifikateur, baséiert op explizit Oplëschtung vun den Ënnerklassen, déi fir d'Verlängerung erlaabt sinn. Package com.example.geometrie; ëffentlech versiegelt Klass Form erlaabt com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {...}

Source: opennet.ru

Setzt e Commentaire