Java SE 15 laidiens

Pēc seÅ”u mēneÅ”u izstrādes Oracle atbrÄ«vots platforma Java SE 15 (Java platforma, Standard Edition 15), atvērtā pirmkoda OpenJDK projekts tiek izmantots kā atsauces ievieÅ”ana. Java SE 15 saglabā atpakaļejoÅ”u saderÄ«bu ar iepriekŔējiem Java platformas laidieniem; visi iepriekÅ” rakstÄ«tie Java projekti darbosies bez izmaiņām, kad tie tiks palaisti jaunajā versijā. InstalÄ“Å”anai gatavas Java SE 15 versijas (JDK, JRE un Server JRE) sagatavots operētājsistēmai Linux (x86_64), Windows un macOS. OpenJDK projekta izstrādātā atsauces realizācija Java 15 ir pilnÄ«bā atvērts avots saskaņā ar GPLv2 licenci, ar GNU ClassPath izņēmumiem, kas ļauj dinamiski izveidot savienojumu ar komerciāliem produktiem.

Java SE 15 ir klasificēts kā vispārējs atbalsta laidiens, un tas turpinās saņemt atjauninājumus lÄ«dz nākamajam laidienam. Ilgtermiņa atbalsta (LTS) filiālei vajadzētu bÅ«t Java SE 11, kas turpinās saņemt atjauninājumus lÄ«dz 2026. gadam. IepriekŔējā Java 8 LTS filiāle tiks atbalstÄ«ta lÄ«dz 2020. gada decembrim. Nākamais LTS izlaidums ir paredzēts 2021. gada septembrÄ«. Atgādinām, ka, sākot ar Java 10 izlaiÅ”anu, projekts pārgāja uz jaunu izstrādes procesu, kas nozÄ«mē Ä«sāku ciklu jaunu laidienu veidoÅ”anai. Jauna funkcionalitāte tagad ir izstrādāta vienā pastāvÄ«gi atjauninātajā galvenajā filiālē, kas ietver gatavas izmaiņas un no kuras filiāles tiek atzarotas ik pēc seÅ”iem mēneÅ”iem, lai stabilizētu jaunus izdevumus.

No jauninājumiem Java 15 viens var Atzīmēt:

  • IebÅ«vēts atbalsts EdDSA (Edwards-Curve Digital Signature Algorithm) digitālā paraksta izveides algoritmam RFC 8032). Piedāvātā EdDSA implementācija nav atkarÄ«ga no aparatÅ«ras platformām, ir aizsargāta pret sānu kanālu uzbrukumiem (tiek nodroÅ”ināts visu aprēķinu konstants laiks) un ir ātrāka veiktspējā nekā esoŔā ECDSA implementācija, kas rakstÄ«ta C valodā, ar tādu paÅ”u aizsardzÄ«bas lÄ«meni. Piemēram, EdDSA, kas izmanto eliptisku lÄ«kni ar 126 bitu atslēgu, uzrāda lÄ«dzÄ«gu veiktspēju kā ECDSA ar eliptisku lÄ«kni secp256r1 un 128 bitu atslēgu.
  • Pievienots eksperimentāls atbalsts slēgtām klasēm un saskarnēm, kuras nevar izmantot citas klases un saskarnes, lai mantotu, paplaÅ”inātu vai ignorētu ievieÅ”anu. AizzÄ«mogotās klases nodroÅ”ina arÄ« deklaratÄ«vāku veidu, kā ierobežot virsklases izmantoÅ”anu nekā piekļuves modifikatori, pamatojoties uz nepārprotamu paplaÅ”ināŔanai atļauto apakÅ”klaÅ”u uzskaitÄ«jumu.

    pakotne com.example.geometry;

    publiska aizzīmogota klase Forma
    atļauj com.example.polar.Circle,
    com.example.quad.Taisnstūris,
    com.example.quad.vienkārÅ”s.Kvadrāts {ā€¦}

  • Pievienots atbalsts slēptām klasēm, kuras nevar tieÅ”i izmantot citu klaÅ”u baitkods. Slēpto klaÅ”u galvenais mērÄ·is ir izmantot ietvaros, kas izpildlaikā dinamiski Ä£enerē klases un izmanto tās netieÅ”i, izmantojot pārdomas. Šādām klasēm parasti ir ierobežots dzÄ«ves cikls, tāpēc to uzturÄ“Å”ana piekļuvei no statiski Ä£enerētām klasēm nav attaisnojama un tikai palielinās atmiņas patēriņu. Slēptās klases arÄ« novērÅ” nepiecieÅ”amÄ«bu pēc nestandarta API sun.misc.Unsafe::defineAnonymousClass, kas ir paredzēts noņemt nākotnē.
  • ZGC (Z Garbage Collector) atkritumu savācējs ir stabilizēts un atzÄ«ts par gatavu plaÅ”ai lietoÅ”anai. ZGC darbojas pasÄ«vā režīmā, maksimāli samazina atkritumu savākÅ”anas radÄ«to latentumu (aiztures laiks, lietojot ZGC, nepārsniedz 10 ms.) un var strādāt gan ar mazām, gan milzÄ«gām kaudzēm, kuru izmērs svārstās no vairākiem simtiem megabaitu lÄ«dz daudziem terabaitiem.
  • Stabilizēts un atrasts gatavs vispārējai lietoÅ”anai
    atkritumu savācējs Shenandoah, strādājot ar minimālām pauzēm (Low-Pause-Time Trabage Collector). Shenandoah izstrādāja Red Hat, un tas ir ievērojams ar algoritma izmantoÅ”anu, kas samazina apstāŔanās laiku atkritumu savākÅ”anas laikā, palaižot tÄ«rÄ«Å”anu paralēli Java lietojumprogrammu izpildei. Atkritumu savācēja ieviesto kavējumu lielums ir prognozējams un nav atkarÄ«gs no kaudzes lieluma, t.i. 200 MB un 200 GB kaudzēm aizkaves bÅ«s identiskas (nenāc ārā ilgāk par 50 ms un parasti 10 ms laikā);

  • Atbalsts ir stabilizējies un ieviests valodā teksta bloki - jauna virkņu literāļu forma, kas ļauj avota kodā iekļaut vairāku rindiņu teksta datus, neizmantojot rakstzÄ«mju atkāpÅ”anos un saglabājot sākotnējo teksta formatējumu blokā. Bloks ir ierāmēts ar trim dubultpēdiņām.

    Piemēram, koda vietā

    Virkne html = " Ā»+
    "\n\t" + " Ā»+
    "\n\t\t" + " \"Java 1 ir klāt!\" Ā»+
    "\n\t" + " Ā»+
    "\n" + " ";

    jūs varat norādīt:

    Virkne html = """


    Ā»Java 1\
    ir Ŕeit!

    """;

  • Pārveidots Mantotā DatagramSocket API. Vecās java.net.DatagramSocket un java.net.MulticastSocket implementācijas ir aizstātas ar modernu implementāciju, kuru ir vieglāk atkļūdot un uzturēt, kā arÄ« ir savietojams ar projekta ietvaros izstrādātajām virtuālajām straumēm Stelles. Iespējamas nesaderÄ«bas ar esoÅ”o kodu gadÄ«jumā vecā ievieÅ”ana nav noņemta, un to var iespējot, izmantojot opciju jdk.net.usePlainDatagramSocketImpl.
  • Piedāvāta otrā eksperimentālā ievieÅ”ana modeļu saskaņoÅ”ana operatorā ā€œinstanceofā€, kas ļauj nekavējoties definēt vietējo mainÄ«go, lai piekļūtu pārbaudÄ«tajai vērtÄ«bai. Piemēram, varat uzreiz uzrakstÄ«t ā€œif (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}ā€, nepārprotami nedefinējot ā€œString s = (String) objā€.

    Bija:

    if (Obj instanceof Group) {
    Grupas grupa = (Grupa)obj;
    var ieraksti = group.getEntries();
    }

    Tagad jÅ«s varat iztikt bez definÄ«cijas ā€œGrupa grupa = (Grupa) objā€:

    if (Obj instanceof Group group) {
    var ieraksti = group.getEntries();
    }

  • Ieteikts atslēgvārda otrā eksperimentālā ievieÅ”anaieraksts", kas nodroÅ”ina kompaktu formu klaÅ”u definÄ“Å”anai, ļaujot izvairÄ«ties no dažādu zema lÄ«meņa metožu, piemēram, equals(), hashCode() un toString() nepārprotamas definÄ“Å”anas gadÄ«jumos, kad dati tiek glabāti tikai laukos, kuru uzvedÄ«ba nemainās. Ja klase izmanto standarta vienāds(), hashCode() un toString() metožu implementācijas, tā var iztikt bez to skaidras definÄ«cijas:

    publisks ieraksts BankTransaction (vietējais datums,
    dubultā summa
    Virknes apraksts) {}

    Šī deklarācija papildus konstruktora un ieguvēja metodēm automātiski pievienos arī vienāds(), hashCode() un toString() metožu implementācijas.

  • Ierosināts otrs sveŔās atmiņas piekļuves API priekÅ”skatÄ«jums, kas ļauj Java lietojumprogrammām droÅ”i un efektÄ«vi piekļūt atmiņas reÄ£ioniem ārpus Java kaudzes, manipulējot ar jaunajām MemorySegment, MemoryAddress un MemoryLayout abstrakcijām.
  • Atspējots un novecojusi neobjektÄ«vās bloÄ·Ä“Å”anas optimizācijas paņēmienu, ko izmanto HotSpot JVM, lai samazinātu bloÄ·Ä“Å”anas izmaksas. Å is paņēmiens ir zaudējis savu nozÄ«mi sistēmās ar atomu instrukcijām, ko nodroÅ”ina mÅ«sdienu CPU, un tā sarežģītÄ«bas dēļ ir pārāk darbietilpÄ«ga, lai to uzturētu.
  • Paziņots novecojis mehānisms RMI aktivizÄ“Å”ana, kas tiks noņemts nākamajā laidienā. Tiek atzÄ«mēts, ka RMI aktivizÄ“Å”ana ir novecojusi, iekļauta Java 8 opciju kategorijā un gandrÄ«z nekad netiek izmantota mÅ«sdienu praksē.
  • Izdzēsts JavaScript dzinējs Nashorna, kas tika novecojusi Java SE 11.
  • Noņemts porti Solaris OS un SPARC procesoriem (Solaris/SPARC, Solaris/x64 un Linux/SPARC). Å o portu noņemÅ”ana ļaus kopienai paātrināt jaunu OpenJDK lÄ«dzekļu izstrādi, netērējot laiku, uzturot Solaris un SPARC specifiskos lÄ«dzekļus.

Avots: opennet.ru

Pievieno komentāru