Java SE 14 laidiens

Pēc sešu mēnešu izstrādes Oracle atbrīvots platforma Java SE 14 (Java platforma, Standard Edition 14), atvērtā pirmkoda OpenJDK projekts tiek izmantots kā atsauces ieviešana. Java SE 14 saglabā atpakaļejošu saderību ar iepriekšējiem Java platformas laidieniem; visi iepriekš rakstītie Java projekti darbosies bez izmaiņām, kad tie tiks palaisti jaunajā versijā. Instalēšanai gatavas Java SE 14 versijas (JDK, JRE un Server JRE) sagatavots operētājsistēmai Linux (x86_64), Windows un macOS. OpenJDK projekta izstrādātā atsauces realizācija Java 14 ir pilnībā atvērts avots saskaņā ar GPLv2 licenci, ar GNU ClassPath izņēmumiem, kas ļauj dinamiski izveidot savienojumu ar komerciāliem produktiem.

Java SE 14 ir klasificēts kā vispārējs atbalsta laidiens, un tas turpinās saņemt atjauninājumus līdz nākamajam laidienam. Ilgtermiņa atbalsta (LTS) filiālei vajadzētu būt Java SE 11, kas turpinās saņemt atjauninājumus līdz 2026. gadam. Iepriekšējā Java 8 LTS filiāle tiks atbalstīta līdz 2020. gada decembrim. Nākamais LTS izlaidums ir paredzēts 2021. gada septembrī. Atgādinām, ka, sākot ar Java 10 izlaišanu, projekts pārgāja uz jaunu izstrādes procesu, kas nozīmē īsāku ciklu jaunu laidienu veidošanai. Jauna funkcionalitāte tagad ir izstrādāta vienā pastāvīgi atjauninātajā galvenajā filiālē, kas ietver gatavas izmaiņas un no kuras filiāles tiek atzarotas ik pēc sešiem mēnešiem, lai stabilizētu jaunus izdevumus.

No jauninājumiem Java 14 viens var Atzīmēt:

  • Pievienots eksperimentāls atbalsts modeļu saskaņošana operatorā “instanceof”, kas ļauj nekavējoties definēt vietējo mainīgo, lai piekļūtu pārbaudītajai vērtībai. Piemēram, varat uzreiz uzrakstīt “if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}”, nepārprotami nedefinējot “String s = (String) obj”.

    Bija:

    if (Obj instanceof Group) {
    Grupas grupa = (Grupa)obj;
    var ieraksti = group.getEntries();
    }

    Tagad jūs varat iztikt bez definīcijas “Grupa grupa = (Grupa) obj”:

    if (Obj instanceof Group group) {
    var ieraksti = group.getEntries();
    }

  • Pievienots eksperimentāls atbalsts jaunajam atslēgvārdam "ieraksts", kas nodrošina kompaktu formu klašu definēšanai, ļaujot izvairīties no dažādu zema līmeņa metožu, piemēram, equals(), hashCode() un toString() nepārprotamas definēšanas gadījumos, kad dati tiek glabāti tikai laukos, kuru uzvedība nemainās. Ja klase izmanto standarta vienāds(), hashCode() un toString() metožu implementācijas, tā var iztikt bez to skaidras definīcijas:

    publisks ieraksts BankTransaction (vietējais datums,
    dubultā summa
    Virknes apraksts) {}

    Šī deklarācija papildus konstruktora un ieguvēja metodēm automātiski pievienos arī vienāds(), hashCode() un toString() metožu implementācijas.

  • Standartizēts un pēc noklusējuma ir iespējots atbalsts jaunai “switch” izteiksmju formai, kas neprasa norādīt operatoru “break”, ļauj kombinēt atkārtotas etiķetes un to var izmantot ne tikai operatora formā, bet arī kā operatoru. izteiksme.

    var log = slēdzis (notikums) {
    case PLAY -> “Lietotājs ir aktivizējis atskaņošanas pogu”;
    case STOP, PAUSE -> “Lietotājam nepieciešams pārtraukums”;
    noklusējuma -> {
    Virknes ziņojums = event.toString();
    LocalDateTime tagad = LocalDateTime.now();
    raža "Nezināms notikums" + ziņojums +
    » pieteicies » + tagad;
    }
    };

  • Paplašināts eksperimentālais atbalsts teksta bloki - jauna virkņu literāļu forma, kas ļauj avota kodā iekļaut vairāku rindu teksta datus, neizmantojot rakstzīmju atkāpšanos un saglabājot sākotnējo teksta formatējumu blokā. Bloks ir ierāmēts ar trim dubultpēdiņām. Programmā Java 14 teksta bloki tagad atbalsta atsoļa secību "\s", lai definētu vienu atstarpi, un "\", lai savienotu ar nākamo rindiņu (jaunrindas ignorēšana, ja jādrukā ļoti gara rinda). Piemēram, koda vietā

    Virkne html = " »+
    "\n\t" + " »+
    "\n\t\t" + " \"Java 1 ir klāt!\" »+
    "\n\t" + " »+
    "\n" + " ";

    jūs varat norādīt:

    Virkne html = """


    »Java 1\
    ir šeit!

    """;

  • Diagnostikas informācijas saturs izņēmumu gadījumos ir paplašināts NullPointerException. Ja iepriekš kļūdas ziņojums attiecās tikai uz rindas numuru, tagad tajā ir norādīta, kura metode izraisīja izņēmumu. Papildu diagnostika pašlaik ir iespējota tikai tad, ja tā tiek palaista ar karogu “-XX:+ShowCodeDetailsInExceptionMessages”. Piemēram, norādot šo karogu, izņēmums rindā

    var nosaukums = lietotājs.getLocation().getCity().getName();

    rezultātā tiks parādīta ziņa

    Izņēmums pavedienā "main" java.lang.NullPointerIzņēmums: nevar izsaukt "Location.getCity()"
    jo "User.getLocation()" atgriešanas vērtība ir nulle
    vietnē NullPointerExample.main(NullPointerExample.java:5):5)

    kas skaidri parāda, ka metode Location.getCity() netika izsaukta un User.getLocation() atgrieza nulli.

  • Īstenots Jpackage utilīta priekšskatījums, kas ļauj izveidot pakotnes autonomām Java lietojumprogrammām. Lietderība ir balstīta uz JavaFX javapackage, un tā ļauj izveidot pakotnes formātos, kas ir raksturīgi dažādām platformām (msi un exe operētājsistēmai Windows, pkg un dmg operētājsistēmai MacOS, deb un rpm operētājsistēmai Linux). Paketēs ir iekļautas visas nepieciešamās atkarības.
  • Uz G1 atkritumu savācēju piebilda jauns atmiņas piešķiršanas mehānisms, kas ņem vērā specifiku darbam ar lielām sistēmām, izmantojot arhitektūru NUMA. Jaunais atmiņas sadalītājs ir iespējots, izmantojot karogu “+XX:+UseNUMA”, un tas var ievērojami uzlabot veiktspēju NUMA sistēmās.
  • Pievienots API JFR (JDK Flight Recorder) notikumu uzraudzībai lidojumā, piemēram, nepārtrauktas uzraudzības organizēšanai.
  • Pievienots jdk.nio.mapmode modulis, kas piedāvā jaunus režīmus (READ_ONLY_SYNC, WRITE_ONLY_SYNC), lai izveidotu kartētu baitu buferus (MappedByteBuffer), kas atsaucas uz pastāvīgo atmiņu (NVM).
  • Īstenots Ārvalstu atmiņas piekļuves API priekšskatījums, kas ļauj Java lietojumprogrammām droši un efektīvi piekļūt atmiņas reģioniem ārpus Java kaudzes, manipulējot ar jaunajām MemorySegment, MemoryAddress un MemoryLayout abstrakcijām.
  • Paziņots novecojuši pieslēgvietas Solaris OS un SPARC procesoriem (Solaris/SPARC, Solaris/x64 un Linux/SPARC), lai nākotnē šos portus noņemtu. Šo portu novecošana ļaus kopienai paātrināt jaunu OpenJDK līdzekļu izstrādi, netērējot laiku Solaris un SPARC specifisko līdzekļu uzturēšanai.
  • Izdzēsts CMS (Concurrent Mark Sweep) atkritumu savācējs, kas pirms diviem gadiem tika atzīmēts kā novecojis un palika neapkopts (CMS jau sen tika aizstāts ar G1 atkritumu savācēju). Turklāt, paziņoja novecojusi ParallelScavenge un SerialOld atkritumu savākšanas algoritmu kombinācijas izmantošana (palaist ar opcijām “-XX:+UseParallelGC -XX:-UseParallelOldGC”).
  • Eksperimentāls atbalsts atkritumu savācējam ZGC (Z Garbage Collector) ir nodrošināts uz macOS un Windows platformām (iepriekš tika atbalstīts tikai operētājsistēmā Linux). ZGC darbojas pasīvā režīmā, pēc iespējas samazina latentumu atkritumu savākšanas dēļ (aiztures laiks, lietojot ZGC, nepārsniedz 10 ms.) un var strādāt gan ar mazām, gan milzīgām kaudzēm, kuru izmērs svārstās no vairākiem simtiem megabaitu līdz daudziem terabaitiem.
  • Noņemts Rīku komplekts un API JAR failu saspiešanai, izmantojot Pack200 algoritmu.

Avots: opennet.ru

Pievieno komentāru