Vydanie Java SE 14

Po šiestich mesiacoch vývoja Oracle uvoľnený plošina JavaSE 14 (Java Platform, Standard Edition 14) sa ako referenčná implementácia používa open-source projekt OpenJDK. Java SE 14 si zachováva spätnú kompatibilitu s predchádzajúcimi vydaniami platformy Java; všetky predtým napísané projekty Java budú pri spustení v novej verzii fungovať bez zmien. Zostavy Java SE 14 pripravené na inštaláciu (JDK, JRE a Server JRE) pripravené pre Linux (x86_64), Windows a macOS. Referenčná implementácia vyvinutá projektom OpenJDK Java 14 je plne open source pod licenciou GPLv2, s výnimkami GNU ClassPath, ktoré umožňujú dynamické prepojenie s komerčnými produktmi.

Java SE 14 je klasifikovaná ako všeobecná podporná verzia a bude naďalej dostávať aktualizácie až do ďalšieho vydania. Pobočka Long Term Support (LTS) by mala byť Java SE 11, ktorá bude naďalej dostávať aktualizácie až do roku 2026. Predchádzajúca LTS vetva Java 8 bude podporovaná do decembra 2020. Ďalšie vydanie LTS je naplánované na september 2021. Pripomeňme, že počnúc vydaním Java 10 projekt prešiel na nový vývojový proces, čo znamená kratší cyklus tvorby nových vydaní. Nová funkcionalita sa teraz vyvíja v jednej neustále aktualizovanej hlavnej vetve, ktorá zahŕňa hotové zmeny a z ktorej sa vetvy rozvetvujú každých šesť mesiacov, aby sa stabilizovali nové vydania.

Z inovácie Java 14 jeden môže značka:

  • Pridaná experimentálna podpora zhoda vzorov v operátori „instanceof“, ktorý umožňuje okamžite definovať lokálnu premennú pre prístup ku kontrolovanej hodnote. Môžete napríklad okamžite napísať „if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}“ bez toho, aby ste explicitne definovali „String s = (String) obj“.

    To bolo:

    if (obj instanceof Group) {
    Skupina skupina = (Group) obj;
    var entries = group.getEntries();
    }

    Teraz sa môžete zaobísť bez definície „Skupina skupiny = (Skupina) obj“:

    if (obj instanceof Group group) {
    var entries = group.getEntries();
    }

  • Pridaná experimentálna podpora pre nové kľúčové slovo „záznam“, ktorý poskytuje kompaktnú formu na definovanie tried, čo vám umožňuje vyhnúť sa explicitnému definovaniu rôznych nízkoúrovňových metód, ako sú equals(), hashCode() a toString() v prípadoch, keď sú údaje uložené iba v poliach, ktorých správanie sa nemení. Keď trieda používa štandardné implementácie metód equals(), hashCode() a toString(), zaobíde sa bez ich explicitnej definície:

    verejný záznam BankTransaction(LocalDate date,
    dvojnásobné množstvo
    Popis reťazca) {}

    Táto deklarácia automaticky pridá implementácie metód equals(), hashCode() a toString() okrem metód konštruktora a získavania.

  • Štandardizované a štandardne je povolená podpora novej formy výrazov „switch“, ktorá nevyžaduje špecifikáciu operátora „break“, umožňuje kombinovať opakované označenia a dá sa použiť nielen vo forme operátora, ale aj ako výraz.

    var log = switch (udalosť) {
    prípad PLAY -> „Používateľ spustil tlačidlo prehrávania“;
    case STOP, PAUSE -> “Používateľ potrebuje prestávku”;
    predvolené -> {
    String message = event.toString();
    LocalDateTime now = LocalDateTime.now();
    výnos "Neznáma udalosť" + správa +
    » prihlásený » + teraz;
    }
    };

  • Rozšírená experimentálna podpora textové bloky - nová forma reťazcových literálov, ktorá umožňuje zahrnúť viacriadkové textové údaje do zdrojového kódu bez použitia znakového escapovania a zachovania pôvodného formátovania textu v bloku. Blok je orámovaný tromi dvojitými úvodzovkami. V Java 14 teraz textové bloky podporujú únikovú sekvenciu "\s" na definovanie jednej medzery a "\" na spojenie s ďalším riadkom (ignorovanie nových riadkov, keď potrebujete vytlačiť veľmi dlhý riadok). Napríklad namiesto kódu

    Reťazec html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 je tu!\" » +
    "\n\t" + " » +
    "\n" + " ";

    môžete špecifikovať:

    Reťazec html = """


    »Java 1\
    Je tu!

    """;

  • Rozšíril sa informačný obsah diagnostiky pri výskyte výnimiek Výnimka NullPointerException. Kým predtým sa chybové hlásenie týkalo iba čísla riadku, teraz podrobne uvádza, ktorá metóda spôsobila výnimku. Pokročilá diagnostika je momentálne povolená iba pri spustení s príznakom „-XX:+ShowCodeDetailsInExceptionMessages“. Napríklad pri zadávaní tohto príznaku výnimka v riadku

    názov var = user.getLocation().getCity().getName();

    výsledkom bude správa

    Výnimka vo vlákne "main" java.lang.NullPointerException: Nie je možné vyvolať "Location.getCity()"
    pretože návratová hodnota "User.getLocation()" je null
    na NullPointerExample.main(NullPointerExample.java:5):5)

    čím je jasné, že metóda Location.getCity() nebola volaná a User.getLocation() vrátila hodnotu null.

  • Implementovaná Ukážka pomôcky jpackage, ktorá vám umožňuje vytvárať balíčky pre samostatné aplikácie Java. Pomôcka je založená na javapackager od JavaFX a umožňuje vytvárať balíčky vo formátoch natívnych pre rôzne platformy (msi a exe pre Windows, pkg a dmg pre macOS, deb a rpm pre Linux). Balíky obsahujú všetky požadované závislosti.
  • Do zberača odpadu G1 dodal nový mechanizmus alokácie pamäte, ktorý zohľadňuje špecifiká práce na veľkých systémoch s použitím architektúry NUMA. Nový alokátor pamäte sa aktivuje pomocou príznaku „+XX:+UseNUMA“ a môže výrazne zlepšiť výkon na systémoch NUMA.
  • Pridané API na monitorovanie udalostí JFR (JDK Flight Recorder) za chodu, napríklad na organizovanie nepretržitého monitorovania.
  • Pridané modul jdk.nio.mapmode, ktorý ponúka nové režimy (READ_ONLY_SYNC, WRITE_ONLY_SYNC) na vytváranie mapovaných bajtových vyrovnávacích pamätí (MappedByteBuffer) odkazujúcich na energeticky nezávislú pamäť (NVM).
  • Implementovaná Ukážka rozhrania Foreign-Memory Access API, ktorá umožňuje aplikáciám Java bezpečne a efektívne pristupovať k pamäťovým oblastiam mimo haldy Java manipuláciou s novými abstrakciami MemorySegment, MemoryAddress a MemoryLayout.
  • Vyhlásené zastarané porty pre OS Solaris a procesory SPARC (Solaris/SPARC, Solaris/x64 a Linux/SPARC) so zámerom odstrániť tieto porty v budúcnosti. Zavrhnutie týchto portov umožní komunite urýchliť vývoj nových funkcií OpenJDK bez toho, aby strácali čas udržiavaním funkcií špecifických pre Solaris a SPARC.
  • Odstránené zberač odpadkov CMS (Concurrent Mark Sweep), ktorý bol pred dvoma rokmi označený za zastaralý a zostal neudržiavaný (CMS bol dávno nahradený zberačom odpadu G1). okrem toho oznámil zakázala používanie kombinácie algoritmov ParallelScavenge a SerialOld garbage collection (spustených s voľbami „-XX:+UseParallelGC -XX:-UseParallelOldGC“).
  • Experimentálna podpora pre zberač odpadu ZGC (Z Garbage Collector) bola poskytnutá na platformách macOS a Windows (predtým podporované iba na Linuxe). ZGC pracuje v pasívnom režime, čo najviac minimalizuje latenciu kvôli garbage collection (čas zastavenia pri použití ZGC nepresahuje 10 ms.) a dokáže pracovať s malými aj obrovskými haldami, ktorých veľkosť sa pohybuje od niekoľkých stoviek megabajtov až po mnoho terabajtov.
  • Odstránený Sada nástrojov a API na kompresiu súborov JAR pomocou algoritmu Pack200.

Zdroj: opennet.ru

Pridať komentár