Java SE 14 izdoŔana

Pēc seÅ”iem izstrādes mēneÅ”iem, uzņēmums Oracle ir izlaidis platformu Java SE 14 (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) ir sagatavotas Linux (x86_64), Windows un macOS. Izstrādātais etalona Ä«stenojums Java 14 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 jaunumiem Java 14 var atzīmēt:

  • Pievienota eksperimentālā atbalsta modelēŔanai 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 Ā«recordĀ«, 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.

  • Standardizēta 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 teksta blokiem — 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 NullPointerException. 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.

  • Ieviests 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 pievienots jauns atmiņas sadales mehānisms, kas ņem vērā specifiku darbam lielās sistēmās, kas izmanto arhitektÅ«ru NUMA. 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.
  • Pievienots API reāllaika JFR (JDK Flight Recorder) notikumu izsekoÅ”anai, piemēram, nepārtrauktai uzraudzÄ«bai.
  • Pievienots 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).
  • Ieviests 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.
  • Paziņoti 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.
  • Noņemts 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 paziņots 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.
  • Notverta instrumentu komplekts un API JAR failu saspieÅ”anai, izmantojot Pack200 algoritmu.

Avots: opennet.lv

Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster