Po šesti měsících vývoje Oracle plošina (Java Platform, Standard Edition 14), open-source projekt OpenJDK se používá jako referenční implementace. Java SE 14 si zachovává zpětnou kompatibilitu s předchozími verzemi platformy Java; všechny dříve napsané Java projekty budou po spuštění v nové verzi fungovat beze změn. Sestavení Java SE 14 připravená k instalaci (JDK, JRE a Server JRE) pro Linux (x86_64), Windows и macOSReferenční implementace, vyvinutá v rámci projektu OpenJDK je plně open source pod licencí GPLv2, s výjimkami GNU ClassPath umožňující dynamické propojení s komerčními produkty.
Java SE 14 je klasifikována jako všeobecná verze podpory a bude i nadále dostávat aktualizace až do příští verze. Pobočka Long Term Support (LTS) by měla být Java SE 11, která bude i nadále dostávat aktualizace až do roku 2026. Předchozí LTS větev Java 8 bude podporována do prosince 2020. Další vydání LTS je naplánováno na září 2021. Připomeňme, že počínaje vydáním Javy 10 přešel projekt na nový vývojový proces, což znamená kratší cyklus tvorby nových verzí. Nové funkce jsou nyní vyvíjeny v jedné neustále aktualizované hlavní větvi, která zahrnuje hotové změny a ze které se větve každých šest měsíců rozvětvují, aby se stabilizovala nová vydání.
Z :
- Přidána experimentální podpora v operátoru „instanceof“, který umožňuje okamžitě definovat lokální proměnnou pro přístup ke kontrolované hodnotě. Můžete například okamžitě napsat „if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}“, aniž byste explicitně definovali „String s = (String) obj“.
Bylo to:
if (obj instanceof Group) {
Group group = (Group)obj;
var entries = group.getEntries();
}Nyní se můžete obejít bez definice „Skupina skupiny = (Group) obj“:
if (obj instanceof Group group) {
var entries = group.getEntries();
} - Přidána experimentální podpora pro nové klíčové slovo „", který poskytuje kompaktní formu pro definování tříd, což vám umožňuje vyhnout se explicitnímu definování různých nízkoúrovňových metod, jako jsou equals(), hashCode() a toString() v případech, kdy jsou data uložena pouze v polích, jejichž chování se nemění. Když třída používá standardní implementace metod equals(), hashCode() a toString(), obejde se bez jejich explicitní definice:
veřejný záznam BankTransaction(LocalDate date,
dvojnásobné množství
Popis řetězce) {}Tato deklarace automaticky přidá implementace metod equals(), hashCode() a toString() kromě metod konstruktoru a getteru.
- a ve výchozím nastavení je povolena podpora pro novou formu výrazů „switch“, která nevyžaduje operátor „break“, umožňuje kombinovat opakující se popisky a dovoluje použití nejen ve formě operátoru, ale i jako výraz.
var log = switch (událost) {
případ PLAY -> „Uživatel stiskl tlačítko přehrávání“;
případ STOP, PAUSE -> „Uživatel potřebuje pauzu“;
výchozí -> {
Řetězec zpráva = událost.naString();
MístníDatumČas nyní = MístníDatumČas.nyní();
výnos "Neznámá událost" + zpráva +
» přihlášen/a » + nyní;
}
}; - Experimentální podpora byla rozšířena — nová forma řetězcových literálů, která umožňuje zahrnout víceřádková textová data do zdrojového kódu bez escapování znaků a zachování původního formátování textu v bloku. Blok je uzavřen do tří dvojitých uvozovek. V Javě 14 nyní textové bloky podporují escape sekvenci „\s“ pro definování jedné mezery a „\“ pro zřetězení s dalším řádkem (ignorování posunů řádků, když je třeba vypsat velmi dlouhý řetězec). Například místo kódu
Řetězec html = " » +
"\n\t" + " » +
"\n\t\t" + " \"Java 1 je tady!\" » +
"\n\t" + " » +
"\n" + " ";můžete určit:
Řetězec html = """
»Java 1\
Je zde!
"""; - Informační obsah diagnostiky při výskytu výjimek byl rozšířen. Zatímco chybová zpráva dříve odkazovala pouze na číslo řádku, nyní podrobně uvádí, která metoda výjimku způsobila. Rozšířená diagnostika je v současné době povolena pouze při spuštění s příznakem „-XX:+ShowCodeDetailsInExceptionMessages“. Například pokud je tento příznak zadán, výjimka v řádku
var jméno = uzivatel.getPoloha().getMěsto().getJméno();
bude mít za následek zobrazení zprávy
Výjimka ve vlákně „main“ java.lang.NullPointerException: Nelze vyvolat „Location.getCity()“
protože návratová hodnota "User.getLocation()" je null
na NullPointerExample.main(NullPointerExample.java:5):5)což nám umožňuje pochopit, že metoda Location.getCity() nebyla volána a User.getLocation() vrátila hodnotu null.
- Předběžná verze utility jpackage, která umožňuje vytvářet balíčky pro samostatné Java aplikace. Utilita je založena na javapackageru od JavaFX a umožňuje vytvářet balíčky ve formátech nativních pro různé platformy (msi a exe pro Windows, balení a poškození pro macOS, deb a rpm pro LinuxBalíčky obsahují všechny potřebné závislosti.
- V garbage collectoru G1 nový mechanismus alokace paměti, který zohledňuje specifika práce na velkých systémech využívajících danou architekturu Nový alokátor paměti se aktivuje pomocí příznaku „+XX:+UseNUMA“ a může výrazně zlepšit výkon na systémech NUMA.
- API pro sledování událostí JFR (JDK Flight Recorder) za chodu, například pro organizaci nepřetržitého monitorování.
- Modul jdk.nio.mapmode, který poskytuje nové režimy (READ_ONLY_SYNC, WRITE_ONLY_SYNC) pro vytváření mapovaných bajtových bufferů (MappedByteBuffer) odkazujících na energeticky nezávislou paměť (NVM).
- Předběžná verze rozhraní Foreign-Memory Access API, které umožňuje aplikacím Java bezpečně a efektivně přistupovat k oblastem paměti mimo haldu Java manipulací s novými abstrakcemi MemorySegment, MemoryAddress a MemoryLayout.
- starší porty pro operační systém Solaris a procesory SPARC (Solaris/SPARC, Solaris/x64 a Linux/SPARC) s úmyslem tyto porty v budoucnu odstranit. Zastarávání těchto portů umožní komunitě urychlit vývoj nových funkcí OpenJDK, aniž by musela ztrácet čas podporou funkcí specifických pro Solaris a SPARC.
- Sběrač odpadků CMS (Concurrent Mark Sweep), který byl před dvěma lety zastaralý a ponechán bez údržby (CMS byl již dávno nahrazen sběračem odpadků G1). Kromě toho, Použití kombinace algoritmů pro sběr odpadků ParallelScavenge a SerialOld bylo zastaralé (spusťte s volbami "-XX:+UseParallelGC -XX:-UseParallelOldGC").
- Na platformách byla poskytnuta experimentální podpora pro sběrač odpadků ZGC (Z Garbage Collector). macOS и Windows (dříve podporováno pouze v Linux). ZGC pracuje v pasivním režimu, čímž co nejvíce minimalizuje zpoždění při sběru odpadků (doba zastavení při použití ZGC nepřesahuje 10 ms) a dokáže pracovat s malými i obrovskými haldami o velikosti od několika stovek megabajtů do mnoha terabajtů.
- Nástroje a API pro kompresi JAR souborů pomocí algoritmu Pack200.
Zdroj: opennet.ru
