Java SE 14 izlaiŔana

Pēc seÅ”u mēneÅ”u izstrādes uzņēmums Oracle izlaida platformu Java SE 14 (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) ir sagatavotas Linux (x86_64), Windows un macOS. Projekta OpenJDK ietvaros izstrādātā referenču realizācija Java 14 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 jaunumiem Java 14 var atzīmēt:

  • Pievienota eksperimentālā atbalsta funkcionalitāte Å”ablona saskaņoÅ”anai 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 Ā«recordĀ«, 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).

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

  • Ieviests 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 iegÅ«ts jauns atmiņas sadales mehānisms, kas ņem vērā lielu sistēmu specifiku, kas izmanto NUMA. 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.
  • Pievienots API, kas ļauj reāllaikā izsekot JFR (JDK Flight Recorder) notikumiem, piemēram, nepārtrauktai uzraudzÄ«bai.
  • Pievienots 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).
  • Ieviests 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.
  • Pasludināti 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.
  • Izņemts 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, paziņots 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.
  • Noņemti rÄ«ki 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