PÄc seÅ”iem izstrÄdes mÄneÅ”iem, uzÅÄmums Oracle platformu (Java Platform, Standard Edition 14), kuras etalona Ä«stenojumu izmanto atvÄrtÄ koda projekts OpenJDK. Java SE 14 saglabÄ atpakaļsaderÄ«bu ar iepriekÅ”Äjiem Java platformas izdevumiem, visi iepriekÅ” rakstÄ«tie Java projekti darbosies bez izmaiÅÄm, kad tie tiks palaisti, izmantojot jauno versiju. InstalÄÅ”anai gatavas Java SE 14 (JDK, JRE un Server JRE) Linux (x86_64), Windows un macOS. IzstrÄdÄtais etalona Ä«stenojums ir pilnÄ«bÄ atvÄrts saskaÅÄ ar GPLv2 licenci ar GNU ClassPath izÅÄmumiem, kas atļauj dinamikÄ saistÄ«t ar komerciÄliem produktiem.
Java SE 14 pieder pie izdevumiem ar parastu atbalsta termiÅu, atjauninÄjumi tiks izlaisti lÄ«dz nÄkamajam izdevumam. KÄ ilgstoÅ”a atbalsta (LTS) versija jÄizmanto Java SE 11, atjauninÄjumi kas tiks izlaisti lÄ«dz 2026. gadam. IepriekÅ”ÄjÄ LTS versija Java 8 tiks atbalstÄ«ta lÄ«dz 2020. gada decembrim. NÄkamÄ LTS izlaidums plÄnots 2021. gada septembrÄ«. AtgÄdinÄm, ka kopÅ” Java 10 izdoÅ”anas projekts ir pÄrgÄjis uz jauno izstrÄdes procesu, kas paredz Ä«sÄku jauno izdevumu veidoÅ”anas ciklu. JaunÄ funkcionalitÄte tagad attÄ«stÄs vienÄ pastÄvÄ«gi atjauninÄtÄ master filiÄlÄ, kurÄ tiek iekļautas jau gatavas izmaiÅas, un no kuras reizi seÅ”os mÄneÅ”os tiek izvedotas filiÄles jaunajiem izlaidumiem stabilizÄcijai.
No :
- Pievienota eksperimentÄlÄ atbalsta operÄtorÄ Ā«instanceofĀ», kas ļauj uzreiz noteikt lokÄlo mainÄ«go piekļuvei pÄrbaudÄ«tajam vÄrtÄ«bai. PiemÄram, var uzreiz rakstÄ«t Ā«if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}Ā» bez skaidras definÄ«cijas Ā«String s = (String) objĀ».
Bijis:
if (obj instanceof Group) {
Group group = (Group) obj;
var entries = group.getEntries();
}Tagad var iztikt bez definīcijas «Group group = (Group) obj»:
if (obj instanceof Group group) {
var entries = group.getEntries();
} - Pievienota eksperimentÄlÄ atbalsta jaunajam atslÄgvÄrdu ««, kas nodroÅ”ina kompaktu veidolu klasÄm, ļaujot izvairÄ«ties no dažÄdu zemu lÄ«meÅu metožu, piemÄram, equals(), hashCode() un toString(), skaidras definÄÅ”anas, ja dati tiek saglabÄti tikai laukos, kuru darbÄ«bas uzvedÄ«ba nemainÄs. Kad klasÄ tiek izmantotas tipiskas metožu equals(), hashCode() un toString() realizÄcijas, tajÄ var iztikt bez to skaidras definÄÅ”anas:
public record BankTransaction(LocalDate date,
double amount,
String description) {}Å is paziÅojums nov leadÄ«s pie automÄtiskas equals(), hashCode() un toString() metožu realizÄciju pievienoÅ”anas papildus konstruktoram un datu izmaiÅu (getter) kontroles metodÄm.
- un iekļauta noklusÄta atbalsta jauna izteiksmes veidam Ā«switchĀ», kas neprasa Ā«breakĀ» operatora norÄdīŔanu, ļaujot apvienot atkÄrtotus apzÄ«mÄjumus un izmantoÅ”anu ne tikai operatora formÄ, bet arÄ« kÄ izteiksmi.
var log = switch (event) {
case PLAY -> Ā«LietotÄjs ir aktivizÄjis atskaÅoÅ”anas poguĀ»;
case STOP, PAUSE -> Ā«LietotÄjam nepiecieÅ”ams pÄrtraukumsĀ»;
default -> {
String message = event.toString();
LocalDateTime now = LocalDateTime.now();
yield Ā«NezinÄma notikums Ā» + message +
Ā» reÄ£istrÄts uz Ā» + now;
}
}; - PaplaÅ”inÄts eksperimentÄlais atbalsts ā jauns virkÅu literÄļu veids, kas ļauj iekļaut daudzrindu teksta datus avota kodÄ, neizmantojot simbola izkropļoÅ”anu un saglabÄjot oriÄ£inÄlo tekstu formatÄjumu blokÄ. Bloks ir norobežots ar trim dubultÄm pÄdiÅÄm. Java 14 tekstu blokos ir nodroÅ”inÄta atbalsta escape secÄ«ba Ā«\sĀ» viena noraksta definÄÅ”anai un Ā«\Ā» apvienoÅ”anai ar nÄkamo rindu (izlaižot pÄreju uz rindu, kad nepiecieÅ”ams izvadÄ«t ļoti garu rindu). PiemÄram, vietÄ, kur kods
String html = Ā«<HTML>Ā» +
Ā«\n\tĀ» + Ā«<BODY>Ā» +
Ā«\n\t\tĀ» + Ā«<H1>\Ā»Java 14 ir klÄt!\Ā»<\/H1>Ā» +
Ā«\n\tĀ» + Ā«<\/BODY>Ā» +
Ā«\nĀ» + Ā«<\/HTML>Ā»;var norÄdÄ«t:
String html = «»»
<HTML>
<BODY>
<H1>»Java 14\
ir klÄt!Ā»<\/H1>
<\/BODY>
<\/HTML>»»»; - PaplaÅ”inÄta diagnostikas informatÄ«vÄ vÄrtÄ«ba, ja rodas izÅÄmumi . Ja iepriekÅ” kļūdas ziÅojums tikai norÄdÄ«ja uz rindu numuru, tad tagad tas detalizÄ, kurÅ” metode izsauca izÅÄmumu. PaplaÅ”inÄta diagnostika pagaidÄm tiek aktivizÄta tikai palaižot ar flagu Ā«-XX:+ShowCodeDetailsInExceptionMessagesĀ». PiemÄram, norÄdot Å”o flagu, izÅÄmums rindÄ
var name = user.getLocation().getCity().getName();
izraisÄ«s ziÅojuma izvadīŔanu
IzvÄles izÅÄmums pavedienÄ Ā«mainĀ» java.lang.NullPointerException: Nevar izsaukt Ā«Location.getCity()Ā»
jo Ā«User.getLocation()Ā» atgrieÅ”anas vÄrtÄ«ba ir null
at NullPointerExample.main(NullPointerExample.java:5):5)kas ļauj saprast, ka metode Location.getCity() netika izsaukta, bet User.getLocation() atgrieza null vÄrtÄ«bu.
- pirmspasÅ«tÄ«juma versija rÄ«ka jpackage, kas ļauj izveidot pakas patstÄvÄ«giem Java lietotnÄm. RÄ«ks balstÄs uz javapackager no JavaFX un ļauj veidot pakas formÄtos, kas ir dzimtie dažÄdÄm platformÄm (msi un exe Windows, pkg un dmg macOS, deb un rpm Linux). Pakas ietver visas nepiecieÅ”amÄs atkarÄ«bas.
- G1 atkritumu savÄcÄjs jauns atmiÅas sadales mehÄnisms, kas Åem vÄrÄ specifiku darbam lielÄs sistÄmÄs, kas izmanto arhitektÅ«ru . Jaunais atmiÅas sadalÄ«tÄjs tiek aktivizÄts ar karodziÅu Ā«+XX:+UseNUMAĀ» un ļauj bÅ«tiski palielinÄt veiktspÄju NUMA sistÄmÄs.
- API reÄllaika JFR (JDK Flight Recorder) notikumu izsekoÅ”anai, piemÄram, nepÄrtrauktai uzraudzÄ«bai.
- modulis jdk.nio.mapmode, kas piedÄvÄ jaunus režīmus (READ_ONLY_SYNC, WRITE_ONLY_SYNC) laikÄ, kad tiek izveidoti attÄlotie bajtu buferi (MappedByteBuffer), kas atsaucas uz neaizvietojamu atmiÅu (NVM).
- pirmspasÅ«tÄ«juma API Foreign-Memory Access, kas ļauj Java lietotnÄm droÅ”i un efektÄ«vi piekļūt atmiÅas jomÄm Ärpus Java kaudzes, manipulÄjot ar jaunÄm abstrakcijÄm MemorySegment, MemoryAddress un MemoryLayout.
- novecojusi Solaris operÄtÄjsistÄmas un SPARC procesoru versija (Solaris/SPARC, Solaris/x64 un Linux/SPARC) ar nodomu nÄkotnÄ noÅemt Ŕīs versijas. RÄ«cÄ«ba par Å”o versiju pÄreju uz novecojuÅ”Äm ļaus kopienai paÄtrinÄt jaunu iespÄju OpenJDK izstrÄdi, netÄrÄjot laiku, uzturot specifiskas iezÄ«mes Solaris un SPARC.
- CMS (Concurrent Mark Sweep) atkritumu savÄcÄjs, kas pirms diviem gadiem tika atzÄ«ts par novecojuÅ”u un palika bez atbalsta (CMS jau sen ir aizvietots ar G1 atkritumu savÄcÄju). TurklÄt par novecojuÅ”u algoritmu kombinÄcijas izmantoÅ”anu atkritumu savÄkÅ”anÄ ParallelScavenge un SerialOld (palaidnÄ ar opcijÄm Ā«-XX:+UseParallelGC -XX:-UseParallelOldGCĀ»).
- Tiek nodroÅ”inÄta eksperimentÄla atbalsta ZGC (Z Garbage Collector) savÄcÄjam uz macOS un Windows platformÄm (iepriekÅ” tikai Linux). ZGC darbojas pasÄ«vÄ režīmÄ, cik vien iespÄjams minimizÄjot aizturi, ko rada atkritumu savÄkÅ”ana (apturÄÅ”anas laiks, izmantojot ZGC, nepÄrsniedz 10 ms) un var darboties gan ar mazÄm, gan ar milzÄ«gÄm kaudzÄm, kuru izmÄrs svÄrstÄs no vairÄkiem simtiem megabaitu lÄ«dz vairÄkiem terabaitiem.
- instrumentu komplekts un API JAR failu saspieŔanai, izmantojot Pack200 algoritmu.
Avots: opennet.lv
