PÄc seÅ”u mÄneÅ”u izstrÄdes uzÅÄmums Oracle platformu (Java Platform, Standard Edition 14), kÄ referenÄu realizÄciju izmantojot atvÄrto projektu OpenJDK. Java SE 14 saglabÄ atpakaļ saderÄ«bu ar iepriekÅ”Äjiem Java platformas izlaidumiem, visi iepriekÅ” rakstÄ«tie Java projekti bez izmaiÅÄm darbosies uz jauno versiju. Gatavas instalÄcijas Java SE 14 versijas (JDK, JRE un Server JRE) Linux (x86_64), Windows un macOS. Projekta OpenJDK ietvaros izstrÄdÄtÄ referenÄu realizÄcija ir pilnÄ«bÄ atvÄrta saskaÅÄ ar GPLv2 licenci ar GNU ClassPath izÅÄmumiem, kas atļauj dinamisku saistīŔanu ar komerciÄliem produktiem.
Java SE 14 tiek klasificÄts kÄ izlaidums ar parasto atbalsta laiku, atjauninÄjumi tiks izlaisti lÄ«dz nÄkamajam izlaidumam. KÄ ilgstoÅ”as atbalsta (LTS) atzaru vajadzÄtu izmantot Java SE 11, kuram atjauninÄjumi tiks izlaisti lÄ«dz 2026. gadam. IepriekÅ”Äjais LTS atzars Java 8 tiks atbalstÄ«ts lÄ«dz 2020. gada decembrim. NÄkamais LTS izlaidums ir plÄnots 2021. gada septembrÄ«. AtgÄdinÄm, ka, sÄkot ar Java 10 izlaidumu, projekts pÄrgÄja uz jaunu izstrÄdes procesu, kas ietver Ä«sÄkus jaunÄ izlaiduma ciklus. Jauna funkcionalitÄte tagad attÄ«stÄs vienÄ pastÄvÄ«gi atjauninÄtÄ master atzarÄ, kas iekļauj jau gatavas izmaiÅas un no kuras reizi seÅ”os mÄneÅ”os tika atzaroti jaunu izlaidumu stabilizÄÅ”anas atzari.
No :
- Pievienota eksperimentÄlÄ atbalsta funkcionalitÄte instanceof operatorÄ, kas ļauj tÅ«lÄ«t noteikt lokÄlo mainÄ«go piekļuvei pÄrbaudÄ«tajam vÄrtÄ«bai. PiemÄram, var tÅ«lÄ«t rakstÄ«t Ā«if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}Ā» bez skaidri definÄjot Ā«String s = (String) objĀ».
Bija:
if (obj instanceof Group) {
Group group = (Group) obj;
var entries = group.getEntries();
}Tagad var iztikt bez definÄÅ”anas Ā«Group group = (Group) objĀ»:
if (obj instanceof Group group) {
var entries = group.getEntries();
} - Pievienota eksperimentÄlÄ atbalsta funkcionalitÄte jaunajam atslÄgvÄrdam ««, nodroÅ”inot kompakto formu klaÅ”u noteikÅ”anai, ļaujot iztikt bez skaidras dažÄdu zemu lÄ«meÅu metožu, piemÄram, equals(), hashCode() un toString(), definÄÅ”anas, kad dati tiek glabÄti tikai laukos, kuru darbÄ«bas uzvedÄ«ba nemainÄs. Kad klasÄ tiek izmantotas tipiskas metožu equals(), hashCode() un toString() implementÄcijas, tajÄ var iztikt bez to skaidras definÄÅ”anas:
public record BankTransaction(LocalDate date,
double amount,
String description) {}Å is paziÅojums nov leads pie automÄtiskas equals(), hashCode() un toString() metožu implementÄciju pievienoÅ”anas papildus konstruktoram un metodÄm, kas kontrolÄ datu izmaiÅas (getter).
- un noklusÄti iekļauta jauno izteiksmju āswitchā atbalsts, kam nav nepiecieÅ”ams norÄdÄ«t ābreakā operators, ļaujot apvienot atkÄrtojoÅ”Äs etiÄ·etes un izmantojot to ne tikai kÄ operatoru, bet arÄ« kÄ izteiksmi.
var log = switch (event) {
case PLAY -> Ā«LietotÄjs ir aktivizÄjis spÄles poguĀ»;
case STOP, PAUSE -> Ā«LietotÄjam nepiecieÅ”ama pauzeĀ»;
default -> {
String message = event.toString();
LocalDateTime now = LocalDateTime.now();
yield Ā«NezinÄms notikums Ā» + message +
Ā» reÄ£istrÄts Ā» + now;
}
}; - PaplaÅ”inÄta eksperimentÄlÄ atbalsts ā jauna virkÅu literÄļu forma, kas ļauj iekļaut avota kodÄ daudzrindu tekstu datus, neizmantojot simbolu maskÄÅ”anu un saglabÄjot sÄkotnÄjo teksta formatÄjumu blokÄ. Bloka apÅemÅ”ana tiek veikta ar trim dubultÄm pÄdiÅÄm. Java 14 tekstu blokos ir ieviesta atbalsts escape-sekvencÄm ā\sā vienas atstarpes noteikÅ”anai un ā\ā apvienoÅ”anai ar nÄkamo rindu (ignorÄjot jaunu rindu, kad jÄizvada ļoti gara rinda). PiemÄram, vietÄ, lai rakstÄ«tu
String html = ā<HTML>ā +
ā\n\tā + ā<BODY>ā +
ā\n\t\tā + ā<H1>\Ā»Java 14 ir klÄt!\Ā»<\/H1>ā +
ā\n\tā + ā<\/BODY>ā +
ā\nā + ā<\/HTML>ā;var rakstÄ«t:
String html = āāā
<HTML>
<BODY>
<H1>»Java 14\
ir klÄt!Ā»<\/H1>
<\/BODY>
<\/HTML>Ā»āā; - PaplaÅ”inÄta diagnostikas informatÄ«va patoloÄ£ijas gadÄ«jumos . Ja iepriekÅ” kļūdas ziÅojums tikai atsaucÄs uz rindu numuru, tad tagad tajÄ detalizÄti tiek norÄdÄ«ts, kurÅ” no metodÄm izsauca izÅÄmumu. PaplaÅ”inÄto diagnostiku pagaidÄm iespÄjams aktivizÄt tikai, palaižot ar flagu ā-XX:+ShowCodeDetailsInExceptionMessagesā. PiemÄram, norÄdot Å”o flagu, izÅÄmums rindÄ
var name = user.getLocation().getCity().getName();
novadÄ«s pie kļūdas ziÅojuma
IegÅ«ta izÅÄmums pavedienÄ Ā«mainĀ» java.lang.NullPointerException: nevar izsaukt Ā«Location.getCity()Ā»
jo Ā«User.getLocation()Ā» atgrieztais rezultÄts ir null
pie NullPointerExample.main(NullPointerExample.java:5):5)kas ļauj saprast, ka metode Location.getCity() netika izsaukta, bet User.getLocation() atgrieza null vÄrtÄ«bu.
- pirmais jpackage rÄ«ka variants, kas ļauj izveidot paketÄs paÅ”pietiekamÄm (self-contained) Java lietotnÄm. RÄ«ks balstÄs uz javapackager no JavaFX un ļauj veidot paketÄs formÄtos, kas ir raksturÄ«gi dažÄdÄm platformÄm (msi un exe Windows, pkg un dmg macOS, deb un rpm Linux). PaketÄs iekļautas visas nepiecieÅ”amÄs atkarÄ«bas.
- G1 atkritumu savÄcÄjs jauns atmiÅas sadales mehÄnisms, kas Åem vÄrÄ lielu sistÄmu specifiku, kas izmanto . JaunÄ atmiÅas sadalÄ«tÄja iekļauÅ”ana tiek veikta ar karogu Ā«+XX:+UseNUMAĀ» un ļauj bÅ«tiski uzlabot sniegumu NUMA sistÄmÄs.
- API, kas ļauj reÄllaikÄ izsekot JFR (JDK Flight Recorder) notikumiem, piemÄram, nepÄrtrauktai uzraudzÄ«bai.
- modulis jdk.nio.mapmode, kas piedÄvÄ jaunus režīmus (READ_ONLY_SYNC, WRITE_ONLY_SYNC) mapÄtu byte buferu (MappedByteBuffer) izveidei, kas atsaucas uz neiznÄ«cinÄmu atmiÅu (NVM).
- pirmais Foreign-Memory Access API variants, kas ļauj Java lietotnÄm droÅ”i un efektÄ«vi piekļūt atmiÅas laukiem Ärpus Java heap, manipulÄjot ar jaunÄm abstrakcijÄm MemorySegment, MemoryAddress un MemoryLayout.
- novecojuÅ”i porti Solaris OS un SPARC procesoriem (Solaris/SPARC, Solaris/x64 un Linux/SPARC) ar nodomu nÄkotnÄ tos izÅemt. Å o portu pÄreja uz novecojuÅ”iem ļaus kopienai paÄtrinÄt jaunu iespÄju attÄ«stÄ«bu OpenJDK, netÄrÄjot laiku, uzturot Solaris un SPARC specifiskÄs iezÄ«mes.
- CMS atkritumu savÄcÄjs (Concurrent Mark Sweep), kas pirms diviem gadiem tika atzÄ«ts par novecojuÅ”u un palicis bez atbalsta (CMS vietÄ sen ir nÄcis G1 atkritumu savÄcÄjs). TurklÄt, novecojuÅ”as ir atkritumu savÄkÅ”anas algoritmu kombinÄcijas ParallelScavenge un SerialOld izmantoÅ”ana (palaide ar iespÄjÄm Ā«-XX:+UseParallelGC -XX:-UseParallelOldGCĀ»).
- Ieguvusi eksperimentÄlÄ atbalsta ZGC (Z Garbage Collector) atkritumu savÄcÄjam macOS un Windows platformÄs (iepriekÅ” tika atbalstÄ«ts tikai Linux). ZGC darbojas pasÄ«vÄ režīmÄ, cik vien iespÄjams samazinot kavÄjumus atkritumu savÄkÅ”anas dÄļ (laiks apstÄÅ”anÄs, lietojot ZGC, nepÄrsniedz 10 ms.) un var darboties gan ar nelielÄm, gan milzÄ«gÄm kaudzÄm, kuru izmÄrs svÄrstÄs no dažu simtu megabaitu lÄ«dz daudziem terabaitiem.
- rīki un API JAR failu saspieŔanai, izmantojot Pack200 algoritmu.
Avots: opennet.lv
