PÄc seÅ”u mÄneÅ”u izstrÄdes Oracle platforma (Java platforma, Standard Edition 14), atvÄrtÄ pirmkoda OpenJDK projekts tiek izmantots kÄ atsauces ievieÅ”ana. Java SE 14 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 14 versijas (JDK, JRE un Server JRE) operÄtÄjsistÄmai Linux (x86_64), Windows un macOS. OpenJDK projekta izstrÄdÄtÄ atsauces realizÄcija 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 14 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 :
- Pievienots eksperimentÄls atbalsts 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();
} - Pievienots eksperimentÄls atbalsts jaunajam atslÄgvÄrdam "", 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.
- un pÄc noklusÄjuma ir iespÄjots atbalsts jaunai "switch" izteiksmju formai, kurai nav nepiecieÅ”ams "break" operators, kas ļauj apvienot atkÄrtotas etiÄ·etes un ļauj tÄs izmantot ne tikai operatora veidÄ, bet arÄ« kÄ izteiksmi.
var log = slÄdzis (notikums) {
gadÄ«jums PLAY -> āLietotÄjs ir aktivizÄjis atskaÅoÅ”anas poguā;
gadÄ«jums STOP, PAUSE -> āLietotÄjai nepiecieÅ”ams pÄrtraukumsā;
noklusÄjums -> {
String ziÅojums = event.toString();
VietÄjaisDatumsLaiks tagad = VietÄjaisDatumsLaiks.tagad();
rezultÄts "NezinÄms notikums" + ziÅojums +
Ā» pieteicies Ā» + tagad;
}
}; - EksperimentÄlais atbalsts ir paplaÅ”inÄts ā jauna virknes literÄļu forma, kas ļauj iekļaut vairÄku rindu teksta datus avota kodÄ, neizmantojot atsoļa rakstzÄ«mes un saglabÄjot sÄkotnÄjo teksta formatÄjumu blokÄ. Bloks ir ietverts trÄ«s pÄdiÅÄs. Java 14 teksta bloki tagad atbalsta atsoļa secÄ«bu "\s" vienas atstarpes definÄÅ”anai un "\" savienoÅ”anai ar nÄkamo rindu (ignorÄjot rindiÅu padeves, ja ir jÄizvada ļoti gara virkne). 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!
"""; - Diagnostikas informÄcijas saturs izÅÄmumu gadÄ«jumÄ ir paplaÅ”inÄts. Lai gan iepriekÅ” kļūdas ziÅojumÄ bija atsauce tikai uz rindas numuru, tagad tajÄ ir norÄdÄ«ta metode, kas izraisÄ«ja izÅÄmumu. PaplaÅ”inÄtÄ diagnostika paÅ”laik ir iespÄjota tikai tad, ja tiek izmantots karodziÅÅ” "-XX:+ShowCodeDetailsInExceptionMessages". PiemÄram, ja ir norÄdÄ«ts Å”is karodziÅÅ”, izÅÄmums rindÄ
mainÄ«gÄ nosaukums = lietotÄjs.getLocation().getCity().getName();
rezultÄtÄ tiks parÄdÄ«ts ziÅojums
IzÅÄmums pavedienÄ "main" java.lang.NullPointerException: Nevar izsaukt "Location.getCity()"
jo "User.getLocation()" atgrieztÄ vÄrtÄ«ba ir nulle
vietnÄ NullPointerExample.main(NullPointerExample.java:5):5)Kas ļauj mums saprast, ka Location.getCity() metode netika izsaukta, un User.getLocation() atgrieza null vÄrtÄ«bu.
- Jpackage utilÄ«tas provizoriskÄ versija, kas ļauj veidot pakotnes patstÄvÄ«gÄm Java lietojumprogrammÄm. Balstoties uz JavaFX javapackager, tÄ izveido pakotnes vietÄjos formÄtos dažÄdÄm platformÄm (.msi un .exe operÄtÄjsistÄmai Windows, .pkg un .dmg operÄtÄjsistÄmai macOS, .deb un .rpm operÄtÄjsistÄmai Linux). PakotnÄs ir iekļautas visas nepiecieÅ”amÄs atkarÄ«bas.
- G1 atkritumu savÄcÄjÄ jauns atmiÅas sadales mehÄnisms, kas Åem vÄrÄ darba specifiku lielÄs sistÄmÄs, izmantojot arhitektÅ«ru Jaunais atmiÅas pieŔķīrÄjs tiek iespÄjots, izmantojot karodziÅu "+XX:+UseNUMA", un tas var ievÄrojami uzlabot veiktspÄju NUMA sistÄmÄs.
- API JFR (JDK Flight Recorder) notikumu izsekoÅ”anai tieÅ”raidÄ, piemÄram, nepÄrtrauktas uzraudzÄ«bas organizÄÅ”anai.
- jdk.nio.mapmode modulis, kas nodroÅ”ina jaunus režīmus (READ_ONLY_SYNC, WRITE_ONLY_SYNC) kartÄtu baitu buferu (MappedByteBuffer) izveidei, atsaucoties uz nepastÄvÄ«go atmiÅu (NVM).
- ÄrÄjÄs atmiÅas piekļuves API provizoriskÄ versija, kas ļauj Java lietojumprogrammÄm droÅ”i un efektÄ«vi piekļūt atmiÅas reÄ£ioniem Ärpus Java kaudzes, manipulÄjot ar jaunajÄm abstrakcijÄm MemorySegment, MemoryAddress un MemoryLayout.
- NovecojuÅ”i Solaris OS un SPARC procesoriem (Solaris/SPARC, Solaris/x64 un Linux/SPARC) paredzÄtie porti ar nolÅ«ku nÄkotnÄ tos noÅemt. Å o portu novecoÅ”ana ļaus kopienai paÄtrinÄt jaunu OpenJDK funkciju izstrÄdi, netÄrÄjot laiku Solaris un SPARC specifisko funkciju atbalstam.
- CMS (Concurrent Mark Sweep) atkritumu savÄcÄjs, kas tika novecojis pirms diviem gadiem un netika uzturÄts (CMS jau sen ir aizstÄts ar G1 atkritumu savÄcÄju). TurklÄt, ParallelScavenge un SerialOld atkritumu savÄkÅ”anas algoritmu kombinÄcijas izmantoÅ”ana ir novecojusi (palaist ar opcijÄm "-XX:+UseParallelGC -XX:-UseParallelOldGC").
- macOS un Windows ir pievienots eksperimentÄls atbalsts ZGC (Z Garbage Collector) atkritumu savÄcÄjam (iepriekÅ” tas tika atbalstÄ«ts tikai Linux). ZGC darbojas pasÄ«vÄ režīmÄ, pÄc iespÄjas samazinot atkritumu savÄkÅ”anas aizkaves (apstÄÅ”anÄs laiks, izmantojot ZGC, nepÄrsniedz 10 ms), un var apstrÄdÄt gan mazus, gan lielus kaudzes apjomus, sÄkot no vairÄkiem simtiem megabaitu lÄ«dz daudziem terabaitiem.
- Rīki un API JAR failu saspieŔanai, izmantojot Pack200 algoritmu.
Avots: opennet.ru
