Ang pagpagawas sa Java SE 14

Pagkahuman sa unom ka bulan nga pag-uswag, ang Oracle gipagawas plataporma JavaSE 14 (Java Platform, Standard Edition 14), ang open-source nga OpenJDK nga proyekto gigamit isip reference nga pagpatuman. Ang Java SE 14 nagmintinar sa atrasado nga pagkaangay sa nangaging mga pagpagawas sa plataporma sa Java; ang tanan nga gisulat kaniadto nga mga proyekto sa Java molihok nga walay mga pagbag-o kung gipadagan ubos sa bag-ong bersyon. Andam nga i-install ang Java SE 14 nga pagtukod (JDK, JRE ug Server JRE) giandam para sa Linux (x86_64), Windows ug macOS. Ang pagpatuman sa pakisayran nga gihimo sa proyekto sa OpenJDK Java 14 bug-os nga bukas nga tinubdan ubos sa lisensya sa GPLv2, nga adunay mga eksepsiyon sa GNU ClassPath nga nagtugot sa dinamikong pagsumpay sa mga komersyal nga produkto.

Ang Java SE 14 giklasipikar ingon usa ka kinatibuk-ang pagpagawas sa suporta ug magpadayon nga makadawat mga update hangtod sa sunod nga pagpagawas. Ang sanga sa Long Term Support (LTS) kinahanglan nga Java SE 11, nga magpadayon nga makadawat mga update hangtod sa 2026. Ang miaging LTS nga sanga sa Java 8 suportahan hangtod sa Disyembre 2020. Ang sunod nga pagpagawas sa LTS gikatakda sa Septyembre 2021. Pahinumdum kami kanimo nga sugod sa pagpagawas sa Java 10, ang proyekto gibalhin sa usa ka bag-ong proseso sa pag-uswag, nga nagpasabut nga usa ka mas mubo nga siklo alang sa pagporma sa mga bag-ong pagpagawas. Ang bag-ong kagamitan naugmad na karon sa usa ka kanunay nga gi-update nga master branch, nga naglakip sa andam na nga mga pagbag-o ug gikan diin ang mga sanga gisanga matag unom ka bulan aron mapalig-on ang mga bag-ong pagpagawas.

Gikan mga inobasyon Java 14 mahimo Mark:

  • Gidugang nga suporta sa eksperimento pagpares sa pattern sa "instanceof" operator, nga nagtugot kanimo sa paghubit dayon sa usa ka lokal nga variable aron ma-access ang gisusi nga kantidad. Pananglitan, mahimo nimong isulat dayon ang "kung (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" nga walay klarong pagpasabot sa "String s = (String) obj".

    Kaniadto:

    kung (obj instanceof Group) {
    Grupo nga grupo = (Grupo)obj;
    var entries = group.getEntries();
    }

    Karon mahimo nimo nga wala ang kahulugan nga "Group group = (Group) obj":

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

  • Gidugang ang eksperimento nga suporta alang sa bag-ong keyword "rekord", nga naghatag og usa ka compact nga porma alang sa pagtino sa mga klase, nga nagtugot kanimo sa paglikay sa dayag nga paghubit sa nagkalain-laing ubos nga lebel nga mga pamaagi sama sa equals(), hashCode() ug toString() sa mga kaso diin ang data gitipigan lamang sa mga field kansang kinaiya dili mausab. Kung ang usa ka klase naggamit sa mga sumbanan nga implementasyon sa managsama (), hashCode () ug toString () nga mga pamaagi, mahimo kini nga wala ang klaro nga kahulugan:

    publiko nga rekord BankTransaction(LocalDate petsa,
    doble nga kantidad
    Deskripsyon sa string) {}

    Kini nga deklarasyon awtomatik nga makadugang sa mga pagpatuman sa equals(), hashCode() ug toString() nga mga pamaagi dugang sa constructor ug getter method.

  • Gi-standardize ug ang suporta alang sa usa ka bag-ong porma sa "switch" nga mga ekspresyon gipalihok pinaagi sa default, nga wala magkinahanglan nga ipiho ang "break" nga operator, nagtugot kanimo sa paghiusa sa balik-balik nga mga label ug mahimong magamit dili lamang sa porma sa usa ka operator, kondili ingon usab usa ka ekspresyon.

    var log = switch (panghitabo) {
    kaso PLAY -> "Gi-trigger sa user ang play button";
    kaso STOP, PAUSE -> "User nagkinahanglan og pahulay";
    default -> {
    String nga mensahe = event.toString();
    LocalDateTime karon = LocalDateTime.now();
    abut "Wala mailhi nga panghitabo" + mensahe +
    Β» naka-log in Β» + karon;
    }
    };

  • Gipadako nga suporta sa eksperimento mga bloke sa teksto - usa ka bag-ong porma sa string literals nga nagtugot kanimo sa paglakip sa multi-line text data sa source code nga walay paggamit sa karakter nga makaikyas ug pagpreserbar sa orihinal nga text formatting sa block. Ang block gi-frame sa tulo ka doble nga mga kinutlo. Sa Java 14, ang mga bloke sa teksto karon nagsuporta sa pagkasunod-sunod sa pag-ikyas nga "\s" aron itakda ang usa ka espasyo ug "\" aron madugtong sa sunod nga linya (wala magtagad sa mga bag-ong linya kung kinahanglan nimo nga mag-imprinta og taas kaayo nga linya). Pananglitan, imbes nga code

    String html = " Β»+
    "\n\t" + " Β»+
    "\n\t\t" + " \"Ania na ang Java 1!\" Β»+
    "\n\t" + " Β»+
    "\n" + " ";

    mahimo nimong ipiho:

    String html = """


    Β»Java 1\
    ania na!

    """;

  • Ang sulud sa kasayuran sa mga diagnostic kung adunay mga eksepsiyon gipalapdan NullPointerException. Samtang kaniadto ang mensahe sa sayup nagtumong lamang sa numero sa linya, karon kini nagdetalye kung unsang pamaagi ang hinungdan sa eksepsiyon. Ang mga advanced diagnostics sa pagkakaron gi-enable lamang kung gilusad gamit ang flag nga "-XX:+ShowCodeDetailsInExceptionMessages". Pananglitan, kung gipiho kini nga bandila, ang eksepsiyon sa linya

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

    moresulta sa usa ka mensahe

    Exception sa thread "main" java.lang.NullPointerException: Dili makatawag sa "Location.getCity()"
    tungod kay ang pagbalik nga bili sa "User.getLocation()" kay null
    sa NullPointerExample.main(NullPointerExample.java:5):5)

    nga nagpatin-aw nga ang Location.getCity() nga pamaagi wala gitawag ug User.getLocation() mibalik nga null.

  • Gipatuman Usa ka preview sa jpackage utility, nga nagtugot kanimo sa paghimo og mga pakete alang sa kaugalingon nga mga aplikasyon sa Java. Ang utility gibase sa javapackager gikan sa JavaFX ug nagtugot kanimo sa paghimo og mga pakete sa mga format nga lumad sa lainlaing mga plataporma (msi ug exe para sa Windows, pkg ug dmg alang sa macOS, deb ug rpm alang sa Linux). Ang mga pakete naglakip sa tanan nga gikinahanglan nga dependencies.
  • Sa G1 garbage collector gidugang usa ka bag-ong mekanismo sa alokasyon sa panumduman nga nagkonsiderar sa mga detalye sa pagtrabaho sa dagkong mga sistema gamit ang arkitektura Numerong. Ang bag-ong memory allocator gi-enable gamit ang "+XX:+UseNUMA" nga bandila ug makapauswag sa performance sa NUMA system.
  • Gidugang API alang sa on-the-fly monitoring sa JFR (JDK Flight Recorder) nga mga panghitabo, pananglitan sa pag-organisar sa padayon nga pagmonitor.
  • Gidugang jdk.nio.mapmode module, nga nagtanyag ug bag-ong mga mode (READ_ONLY_SYNC, WRITE_ONLY_SYNC) para sa pagmugna ug mapped byte buffers (MappedByteBuffer) nga nagtumong sa non-volatile memory (NVM).
  • Gipatuman Usa ka preview sa Foreign-Memory Access API, nga nagtugot sa Java nga mga aplikasyon nga luwas ug episyente nga maka-access sa mga rehiyon sa memorya sa gawas sa Java heap pinaagi sa pagmaniobra sa bag-ong MemorySegment, MemoryAddress, ug MemoryLayout abstractions.
  • Gipahibalo wala na gigamit nga mga pantalan alang sa Solaris OS ug SPARC nga mga processor (Solaris/SPARC, Solaris/x64 ug Linux/SPARC) uban ang tuyo nga tangtangon kini nga mga pantalan sa umaabot. Ang pag-deprecate niini nga mga pantalan magtugot sa komunidad sa pagpadali sa pagpalambo sa bag-ong mga feature sa OpenJDK nga dili mag-usik ug panahon sa pagmentinar sa Solaris ug SPARC nga piho nga mga feature.
  • Gipapas ang CMS (Concurrent Mark Sweep) garbage collector, nga gimarkahan nga obsolete duha ka tuig na ang milabay ug nagpabilin nga wala maatiman (CMS gipulihan dugay na sa G1 garbage collector). Gawas pa, gipahibalo wala gamita ang paggamit sa kombinasyon sa ParallelScavenge ug SerialOld nga mga algorithm sa pagkolekta sa basura (pagdagan uban ang mga opsyon nga "-XX:+UseParallelGC -XX:-UseParallelOldGC").
  • Ang eksperimento nga suporta alang sa ZGC (Z Garbage Collector) garbage collector gihatag sa macOS ug Windows nga mga plataporma (kaniadto gisuportahan lamang sa Linux). Ang ZGC naglihok sa passive mode, nagpamenos sa latency tungod sa pagkolekta sa basura kutob sa mahimo (stall time kung ang paggamit sa ZGC dili molapas sa 10 ms.) ug makatrabaho sa gagmay ug dagkong mga pundok, gikan sa pipila ka gatos ka megabytes ngadto sa daghang terabytes.
  • Gitangtang Toolkit ug API alang sa pag-compress sa JAR files gamit ang Pack200 algorithm.

Source: opennet.ru

Idugang sa usa ka comment