Ang pagpagawas sa Java SE 15

Pagkahuman sa unom ka bulan nga pag-uswag, ang Oracle gipagawas plataporma JavaSE 15 (Java Platform, Standard Edition 15), ang open-source nga OpenJDK nga proyekto gigamit isip reference nga pagpatuman. Ang Java SE 15 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 15 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 15 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 15 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 15 mahimo Mark:

  • Gitukod-sa suporta alang sa EdDSA (Edwards-Curve Digital Signature Algorithm) digital signature creation algorithm RFC 8032). Ang gisugyot nga pagpatuman sa EdDSA wala magdepende sa mga plataporma sa hardware, giprotektahan gikan sa mga pag-atake sa kilid nga channel (gisiguro ang kanunay nga oras sa tanan nga mga kalkulasyon) ug mas paspas ang pasundayag kaysa sa naglungtad nga pagpatuman sa ECDSA nga gisulat sa C nga lengguwahe, nga adunay parehas nga lebel sa proteksyon. Pananglitan, ang EdDSA nga naggamit ug elliptic curve nga adunay 126-bit key nagpakita sa susamang performance sa ECDSA nga adunay secp256r1 elliptic curve ug 128-bit key.
  • Gidugang eksperimento nga suporta alang sa mga selyado nga mga klase ug mga interface, nga dili magamit sa ubang mga klase ug mga interface aron makapanunod, madugangan, o ma-override ang pagpatuman. Ang mga selyado nga klase naghatag usab ug usa ka labi ka deklaratibo nga paagi aron mapugngan ang paggamit sa usa ka superclass kaysa sa mga modifier sa pag-access, base sa klaro nga paglista sa mga subclass nga gitugotan alang sa extension.

    package com.example.geometry;

    publiko nga selyado nga klase nga Porma
    permiso com.example.polar.Circle,
    com.example.quad.Rectangle,
    com.example.quad.simple.Square {…}

  • Gidugang suporta alang sa mga tinago nga mga klase nga dili magamit direkta sa bytecode sa ubang mga klase. Ang yawe nga katuyoan sa tinago nga mga klase mao ang gamiton sa mga balangkas nga dinamikong makamugna mga klase sa oras sa pagdagan ug gamiton kini sa dili direkta, pinaagi sa pagpamalandong. Ang ingon nga mga klase kasagaran adunay usa ka limitado nga siklo sa kinabuhi, mao nga ang pagpadayon niini alang sa pag-access gikan sa mga statically generated nga mga klase dili makatarunganon ug modala lamang sa pagtaas sa konsumo sa memorya. Giwagtang usab sa mga tinago nga klase ang panginahanglan alang sa dili standard nga API sun.misc.Unsafe::defineAnonymousClass, nga gitakda nga tangtangon sa umaabot.
  • Ang ZGC (Z Garbage Collector) garbage collector na-stabilize ug giila nga andam na alang sa kaylap nga paggamit. 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.
  • Gipalig-on ug nakit-an nga andam alang sa kinatibuk-ang paggamit
    tigkolekta sa basura Shenandoah, nagtrabaho uban ang gamay nga paghunong (Low-Pause-Time Garbage Collector). Ang Shenandoah gimugna sa Red Hat ug nabantog tungod sa paggamit niini sa usa ka algorithm nga nagpamenos sa oras sa stall sa panahon sa pagkolekta sa basura pinaagi sa pagpadagan sa paglimpyo nga susama sa pagpatuman sa mga aplikasyon sa Java. Ang gidak-on sa mga paglangan nga gipaila sa tigkolekta sa basura matag-an ug wala magdepende sa gidak-on sa tapok, i.e. alang sa mga tapok sa 200 MB ug 200 GB ang mga paglangan magkaparehas (ayaw paggawas lapas sa 50 ms ug kasagaran sulod sa 10 ms);

  • Ang suporta gipalig-on ug gipaila sa pinulongan mga bloke sa teksto - usa ka bag-ong porma sa string literals nga nagtugot kanimo sa paglakip sa multi-line nga datos sa teksto sa source code nga dili mogamit sa karakter nga makaikyas ug magpreserbar sa orihinal nga pag-format sa teksto sa block. Ang block gi-frame sa tulo ka doble nga mga kinutlo.

    Pananglitan, imbes sa 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!

    """;

  • Gibuhat pag-usab Legacy DatagramSocket API. Ang daan nga mga pagpatuman sa java.net.DatagramSocket ug java.net.MulticastSocket gipulihan sa modernong pagpatuman nga mas sayon ​​nga i-debug ug mamentinar, ug nahiuyon usab sa mga virtual nga sapa nga naugmad sulod sa proyekto Pangit. Sa kaso sa posibleng incompatibility sa kasamtangan nga code, ang daan nga implementasyon wala matangtang ug mahimong magamit gamit ang jdk.net.usePlainDatagramSocketImpl nga opsyon.
  • Gisugyot ang ikaduhang eksperimento nga pagpatuman 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();
    }

  • Gisugyot ikaduha nga eksperimento nga pagpatuman sa keyword nga "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.

  • Gisugyot ikaduha nga 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.
  • Nabaldado ug wala gamita ang Biased Locking optimization technique nga gigamit sa HotSpot JVM aron makunhuran ang locking overhead. Kini nga teknik nawad-an sa kalabutan niini sa mga sistema nga adunay atomic nga mga instruksyon nga gihatag sa modernong mga CPU, ug hilabihan ka kusog sa pagtrabaho aron mapadayon tungod sa pagkakomplikado niini.
  • Gipahibalo karaan nga mekanismo Pag-aktibo sa RMI, nga tangtangon sa umaabot nga pagpagawas. Namatikdan nga ang RMI Activation wala na sa panahon, gibalhin sa kategorya sa usa ka kapilian sa Java 8 ug halos wala gigamit sa modernong praktis.
  • Gipapas JavaScript nga makina Nashorn, nga wala na gigamit sa Java SE 11.
  • Gitangtang mga pantalan alang sa Solaris OS ug SPARC nga mga processor (Solaris/SPARC, Solaris/x64 ug Linux/SPARC). Ang pagtangtang niini nga mga pantalan magtugot sa komunidad sa pagpadali sa pagpalambo sa bag-ong mga bahin sa OpenJDK nga dili mag-usik ug panahon sa pagmentinar sa Solaris- ug SPARC-specific nga mga bahin.

Source: opennet.ru

Idugang sa usa ka comment