Java SE 15 leidimas

Po šešių mėnesių plėtros „Oracle“. paleistas platforma „Java SE 15“ (Java platforma, standartinis leidimas 15), atvirojo kodo OpenJDK projektas naudojamas kaip nuoroda. „Java SE 15“ palaiko atgalinį suderinamumą su ankstesniais „Java“ platformos leidimais, paleidus naują versiją, visi anksčiau parašyti „Java“ projektai veiks be pakeitimų. Paruoštos įdiegti Java SE 15 versijos (JDK, JRE ir Server JRE) paruoštas skirta Linux (x86_64), Windows ir macOS. OpenJDK projekto sukurtas referencinis diegimas java 15 yra visiškai atviro kodo pagal GPLv2 licenciją, su GNU ClassPath išimtimis, leidžiančiomis dinamiškai susieti su komerciniais produktais.

„Java SE 15“ yra klasifikuojama kaip bendras palaikymo leidimas ir bus atnaujinamas iki kito leidimo. Ilgalaikio palaikymo (LTS) filialas turėtų būti Java SE 11, kuris ir toliau gaus atnaujinimus iki 2026 m. Ankstesnė LTS „Java 8“ atšaka bus palaikoma iki 2020 m. gruodžio mėn. Kitas LTS leidimas numatytas 2021 m. rugsėjo mėn. Priminsime, kad nuo „Java 10“ išleidimo projektas perėjo prie naujo kūrimo proceso, o tai reiškia trumpesnį naujų leidimų formavimo ciklą. Naujos funkcijos dabar sukurtos vienoje nuolat atnaujinamoje pagrindinėje šakoje, kuri apima paruoštus pakeitimus ir iš kurios šakos kas šešis mėnesius atšakojamos siekiant stabilizuoti naujus leidimus.

Nuo naujoves java 15 vienas gali ženklas:

  • Įmontuotas palaikymas EdDSA (Edwards-Curve Digital Signature Algorithm) skaitmeninio parašo kūrimo algoritmui RFC 8032). Siūlomas EdDSA diegimas nepriklauso nuo aparatinės įrangos platformų, yra apsaugotas nuo šoninių kanalų atakų (užtikrintas pastovus visų skaičiavimų laikas) ir yra greitesnis nei esamas ECDSA diegimas, parašytas C kalba, su tokiu pat apsaugos lygiu. Pavyzdžiui, EdDSA, naudojanti elipsinę kreivę su 126 bitų raktu, veikia panašiai kaip ECDSA su elipsine kreive secp256r1 ir 128 bitų raktu.
  • Pridėta eksperimentinis užantspauduotų klasių ir sąsajų palaikymas, kurių kitos klasės ir sąsajos negali naudoti, kad paveldėtų, išplėstų arba nepaisytų diegimo. Užantspauduotos klasės taip pat yra labiau deklaratyvus būdas apriboti superklasės naudojimą nei prieigos modifikatoriai, remiantis aiškiai išvardintais poklasiais, kuriuos leidžiama išplėsti.

    paketas com.example.geometry;

    viešoji užantspauduota klasė Forma
    leidžia com.example.polar.Circle,
    com.example.quad.Stačiakampis,
    com.example.quad.paprastas.Kvadratas {…}

  • Pridėta palaikymas paslėptoms klasėms, kurių negali tiesiogiai naudoti kitų klasių baitų kodas. Pagrindinis paslėptų klasių tikslas yra būti naudojamas sistemose, kurios dinamiškai generuoja klases vykdymo metu ir naudoja jas netiesiogiai, per apmąstymas. Tokios klasės paprastai turi ribotą gyvavimo ciklą, todėl jų priežiūra, kad būtų galima pasiekti iš statiškai sugeneruotų klasių, nėra pagrįsta ir tik padidins atminties suvartojimą. Paslėptose klasėse taip pat nebereikia nestandartinės API sun.misc.Unsafe::defineAnonymousClass, kurią planuojama pašalinti ateityje.
  • ZGC (Z Garbage Collector) šiukšlių rinktuvas buvo stabilizuotas ir pripažintas paruoštu plačiam naudojimui. ZGC veikia pasyviuoju režimu, maksimaliai sumažina delsą dėl šiukšlių surinkimo (stojimo laikas naudojant ZGC neviršija 10 ms.) ir gali dirbti tiek su mažomis, tiek su didžiulėmis krūvomis, kurių dydis svyruoja nuo kelių šimtų megabaitų iki daugelio terabaitų.
  • Stabilizuotas ir paruoštas bendram naudojimui
    šiukšlių surinkėjas Shenandoah, dirbant su minimaliomis pauzėmis (Low-Pause-Time šiukšlių surinkėjas). „Shenandoah“ sukūrė „Red Hat“ ir pasižymi tuo, kad naudoja algoritmą, kuris sumažina sustojimo laiką šiukšlių surinkimo metu, paleidžiant valymą lygiagrečiai su „Java“ programų vykdymu. Šiukšlių surinkėjo įvestų vėlavimų dydis yra nuspėjamas ir nepriklauso nuo krūvos dydžio, t.y. 200 MB ir 200 GB krūvoms vėlavimai bus vienodi (neišeik ilgiau nei 50 ms ir paprastai per 10 ms);

  • Palaikymas buvo stabilizuotas ir įtrauktas į kalbą teksto blokai - nauja eilučių literalų forma, leidžianti į šaltinio kodą įtraukti kelių eilučių teksto duomenis nenaudojant simbolių pašalinimo ir išsaugant pradinį teksto formatavimą bloke. Blokas įrėmintas trimis dvigubomis kabutėmis.

    Pavyzdžiui, vietoj kodo

    Eilutė html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 jau čia!\" » +
    "\n\t" + " » +
    "\n" + " ";

    galite nurodyti:

    Eilutė html = """


    »Java 1\
    čia!

    """;

  • Perkurta Legacy DatagramSocket API. Seni java.net.DatagramSocket ir java.net.MulticastSocket diegimai buvo pakeisti moderniu diegimu, kurį lengviau derinti ir prižiūrėti, be to, jis yra suderinamas su virtualiais srautais, sukurtais projekto metu. Loom. Esant galimam nesuderinamumui su esamu kodu, senasis diegimas nebuvo pašalintas ir gali būti įjungtas naudojant jdk.net.usePlainDatagramSocketImpl parinktį.
  • Siūlomas antrasis eksperimentinis įgyvendinimas modelio derinimas operatoriuje „instanceof“, kuris leidžia iš karto apibrėžti vietinį kintamąjį, kad pasiektumėte patikrintą reikšmę. Pavyzdžiui, galite iš karto parašyti „if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}“ aiškiai neapibrėždami „String s = (String) obj“.

    Tai buvo:

    if (grupės objektas) {
    Grupės grupė = (Grupė) obj;
    var įrašai = group.getEntries();
    }

    Dabar galite apsieiti be apibrėžimo „Grupės grupė = (Grupė) obj“:

    if (grupės grupės objektas) {
    var įrašai = group.getEntries();
    }

  • Siūloma antras eksperimentinis raktinio žodžio įgyvendinimasįrašas“, kuri suteikia kompaktišką klasių apibrėžimo formą, leidžiančią vengti aiškiai apibrėžti įvairius žemo lygio metodus, tokius kaip equals(), hashCode() ir toString() tais atvejais, kai duomenys saugomi tik laukuose, kurių elgsena nesikeičia. Kai klasė naudoja standartinius equals(), hashCode() ir toString() metodų įgyvendinimus, ji gali apsieiti be aiškaus jų apibrėžimo:

    viešas įrašas BankTransaction (LocalDate data,
    dviguba suma
    Eilutės aprašas) {}

    Ši deklaracija, be konstruktoriaus ir geterio metodų, automatiškai pridės ir lygių(), hashCode() ir toString() metodų įgyvendinimus.

  • Siūloma antroji „Foreign-Memory Access“ API peržiūra, leidžianti „Java“ programoms saugiai ir efektyviai pasiekti atminties sritis už „Java“ krūvos ribų, manipuliuojant naujomis „MemorySegment“, „MemoryAddress“ ir „MemoryLayout“ abstrakcijomis.
  • Išjungta ir panaikino šališko užrakinimo optimizavimo techniką, naudojamą HotSpot JVM, kad sumažintų užrakinimo išlaidas. Ši technika prarado savo aktualumą sistemose su atominėmis instrukcijomis, kurias teikia šiuolaikiniai centriniai procesoriai, ir yra per daug darbo reikalaujanti, kad ją būtų galima išlaikyti dėl savo sudėtingumo.
  • Paskelbta pasenęs mechanizmas RMI aktyvinimas, kuris bus pašalintas būsimame leidime. Pastebėta, kad RMI aktyvinimas yra pasenęs, „Java 8“ pasirinktas ir beveik niekada nenaudojamas šiuolaikinėje praktikoje.
  • Ištrinta JavaScript variklis Nashornas, kuris buvo nebenaudojamas Java SE 11.
  • Ištrinta prievadai Solaris OS ir SPARC procesoriams (Solaris/SPARC, Solaris/x64 ir Linux/SPARC). Pašalinus šiuos prievadus, bendruomenė galės paspartinti naujų OpenJDK funkcijų kūrimą negaištant laiko Solaris ir SPARC specifinių funkcijų priežiūrai.

Šaltinis: opennet.ru

Добавить комментарий