JDK 14: Nove značajke u Javi 14

Java Development Kit (JDK) 14 stigao je do GA-a, stižući u izdanju opće dostupnosti za produkcijske implementacije. Nadogradnja na standardnu ​​Javu uključuje nove mogućnosti kao što su strujanje događaja JDK Flight Recorder, podudaranje uzoraka i izrazi prebacivanja. 

JDK 14 izdanje je značajke Java, umjesto izdanja za dugoročnu podršku (LTS), nakon šestomjesečnog ritma izdanja postavljenog za Javu. JDK 14 primit će sigurnosna ažuriranja u travnju i srpnju prije nego što će ga zamijeniti JDK 15, također izdanje koje nije LTS, a koje treba izaći u rujnu. Trenutno izdanje LTS-a je JDK 11. 

Nove značajke i poboljšanja u JDK 14 uključuju:

  • JFR Streaming događaja pruža API za kontinuiranu potrošnju JFR podataka iz aplikacija i izvan procesa. JFR je alat za prikupljanje profila i dijagnostičkih podataka o Java aplikaciji i JVM-u dok su pokrenuti. Prijedlog za strujanje događaja bilježi isti skup događaja kao i za slučaj nestrujanja, s režijskim troškovima ako je moguće. Strujanje događaja mora postojati istovremeno sa snimkama koje se ne struje, i na disku i na memoriji. Motiviranje ovog prijedloga je situacija u kojoj HotSpot VM emitira više od 500 točaka podataka koristeći JFR, od kojih je većina dostupna samo raščlanjivanjem datoteka dnevnika. Trenutno korisnik mora započeti snimanje, zaustaviti ga, izbaciti sadržaj na disk i zatim raščlaniti datoteku snimanja. Ovo dobro radi za profiliranje aplikacija, ali ne i za potrebe praćenja.Primjer praćenja upotrebe je nadzorna ploča koja prikazuje dinamička ažuriranja podataka. Stvaranje snimke ima dodatnih troškova, poput kopiranja podataka iz spremišta diska u zasebnu datoteku snimanja. Da postoji način čitanja podataka koji se snimaju iz spremišta diska bez stvaranja nove datoteke snimanja, mogao bi se izbjeći velik dio dodatnih troškova.
  • Planirano poboljšanje  NullPointerExceptionsodnosi se na poboljšanje upotrebljivosti iznimaka koje generira JVM opisujući točno koja je varijabla bila nula. Autori prijedloga nastoje pružiti korisne informacije programerima i pomoćnom osoblju o preranom prekidu programa i poboljšati razumijevanje programa jasnijim povezivanjem dinamičke iznimke sa statičkim programskim kodom. Jedan je cilj smanjiti zbunjenost i zabrinutost programera NullPointerExceptions.
  • Stalni preslikani bajtni baferi dodali bi nove načine mapiranja datoteka specifične za JDK koji omogućuju API-ju FileChannel da se koristi za stvaranje MappedByteBufferinstanci koje se odnose na trajnu memoriju (NVM). NVM omogućuje programerima izgradnju i ažuriranje stanja programa u svim programskim izvođenjima bez stvaranja značajnih troškova kopiranja ili prevođenja koji obično trebaju ulazne i izlazne operacije. To je osobito značajno za transakcijske programe. Stoga je glavni cilj ovog prijedloga za poboljšanje JDK-a osigurati da klijenti mogu dosljedno i učinkovito pristupiti i ažurirati NVM iz Java programa. Sekundarni je cilj implementirati ovo ponašanje urezivanja korištenjem ograničenog, JDK-internog API-ja definiranog u klasi Unsafe, tako da ga mogu ponovno koristiti klase koje nisuMappedByteBufferkoji će se možda morati posvetiti NVM-u. Drugi je cilj omogućiti praćenje međuspremnika preslikanih preko NVM-a pomoću postojećih API-ja za praćenje i upravljanje. Ciljne OS / CPU platforme uključuju Linux / x64 i Linux / AArch64.
  • Izrazi prekidača pojednostavljuju kodiranje proširivanjem  switchtako da se može koristiti ili kao izraz ili kao izraz. Očekuje se da će izrazi prekidača biti trajna značajka u JDK 14, nakon što se pregledaju i u JDK 12 i u JDK 13. Izrazi prekidača također se pripremaju za upotrebu podudaranja uzoraka u switch. Usklađivanje uzoraka omogućuje programerima da uvjetno izdvajaju komponente iz objekata sažetije i sigurnije. 
  • Dodjela memorije sa znanjem NUMA za G1 sakupljač smeća, namijenjena poboljšanju G1 performansi na velikim strojevima. 
  • Uklanjanje sakupljača smeća Concurrent Mark Sweep (CMS), koji je prethodno zastario i predviđen za uklanjanje. Nastali su nasljednici CMS-a, uključujući ZGC i Shenandoah. 
  • Prijenos ZGC-a na MacOS. Do sada je podržan samo na Linuxu.
  • Uklanjanje alata pack200 i unpack200 i Pack200 API-ja u java.util.jarpaketu. Sve je to zastarelo u Javi SE 11 s namjerom da ih ukloni u budućnosti. Pack200 je shema kompresije za JAR datoteke.
  • Zapisi, koji bi osigurali kompaktnu sintaksu za deklariranje klasa koje su prozirni držači za plitko nepromjenjive podatke. Zapisi olakšavaju stvaranje klasa koje su u osnovi nositelji podataka, bez potrebe za pisanjem puno uzorka. Prijedlog navodi da bi trebalo biti lako i jezgrovito proglasiti plitko nepromjenjive, dobro odgojene nominalne agregate podataka.
  • Alat za pakiranje, u fazi razvoja inkubatora, za pakiranje samostalnih Java aplikacija. Alat bi se temeljio na JavaFX-u javapackager. Takav je alat bio uključen u Javu, ali je izrezan iz JDK 11 kao dio uklanjanja JavaFX-a.
  • Poboljšajte jezik uz podudaranje uzoraka za instanceof operatera. Ovo bi bila značajka pregleda u JDK 14. Usklađivanje uzoraka omogućava zajedničku logiku u programu, uglavnom uvjetnu ekstrakciju komponenata iz objekata, da se sažeti i sigurnije izrazi. Kôd se može učiniti kratkim i sigurnim za tip.
  • Drugi pregled tekstualnih blokova, višeredni doslovni niz koji izbjegava potrebu za većinom izlaznih sekvenci i automatski oblikuje niz na predvidljiv način. Tekstualni blokovi razvojnim programerima daju kontrolu nad formatom po želji, pojednostavljuju pisanje Java programa i poboljšavaju čitljivost nizova. Tekst blokovi su pregledani u JDK 13; iteracija JDK 14 dodala bi izlazne sekvence za upravljanje eksplicitnim razmacima i kontrolu novog retka.
  • Poništavanje kombinacije paralelnih algoritama čišćenja i serijskih starih algoritama za odvoz smeća. Održavači Java vjeruju da se ova kombinacija koristi vrlo malo, ali zahtijeva puno održavanja.
  • Prijenos ZGC-a (Zbirka smeća) na Windows. Ova je značajka ponovno premještena na službeno ciljani popis, nakon što je vraćena natrag na popis predloženih za ciljanje.
  • API za pristup stranoj memoriji, s uvođenjem API-ja za Java programe za siguran i učinkovit pristup stranoj memoriji izvan Java gomile. Ovaj bi API trebao služiti kao alternativa glavnim putovima kojima Java programi pristupaju memoriji, uključujući nio.ByteBufferi sun.misc.Unsafe. Novi API trebao bi moći raditi na raznim vrstama memorije, uključujući izvornu, postojanu memoriju i upravljanu hrpu. Ne bi trebalo biti moguće da API potkopa sigurnost JVM-a. Izdvajanje memorije treba biti eksplicitno u izvornom kodu. Očekuje se da će API pomoći u razvoju nativne podrške za interoperaciju što je cilj projekta Panama.
  • Ukidanje portova Solaris / Sparc, Solaris / x64 i Linux / Sparc s namjerom da ih uklone u budućem izdanju. Ispuštanje podrške za ove portove omogućit će suradnicima OpenJDK da ubrzaju razvoj novih značajki. Iako su Solaris i Sparc bile povezane tehnologije Sun Microsystemsa, izvornog tvorca Jave, posljednjih su ih godina u tehnološkom prostoru zamijenili Linux OS i Intel procesori.

Gdje preuzeti JDK 14

Otvoreni izvor JDK 14 možete preuzeti s jdk.java.net za Linux, Windows i macOS. Oracle komercijalnu Java SE 14 možete preuzeti s Oracle.com.