Programování

Java JDK 11: Všechny nové funkce jsou nyní k dispozici

Java Development Kit (JDK) 11 je nyní obecně dostupná a připravená pro produkční použití, přináší vylepšení produktivity a klientské rozhraní API HTTP, které implementuje HTTP / 2.

Verze 11 Java Standard Edition (SE) má 16 hlavních změn funkcí. Java 11 také ztrácí některé funkce odstraněním modulů CORBA a Java EE (nedávno přejmenovaných na Jakarta EE), stejně jako odstraněním JavaFX, který je nyní k dispozici jako samostatná technologie.

V prostředí Java 11 společnost Oracle rozdělila hlavní úložiště, jdk / jdk, na stabilizační úložiště jdk / jdk11. Změny přenesené do jdk / jdk nebo jdk / client jsou nyní označeny pro JDK 12. Stabilizační úložiště může přijímat vybrané opravy chyb a pokud je schváleno, pozdní vylepšení podle procesu vydání JDK.

Nejnovější verzí implementace standardní Java společností Oracle je vydání Long Term Support (LTS), které bude mít komerční podporu od společnosti Oracle po dobu nejméně osmi let. Opravy chyb a bezpečnostní aktualizace budou nabízeny do roku 2026. Nové verze LTS budou vydávány každé tři roky, JDK 17, které má být vydáno v roce 2021, má být dalším vydáním LTS. Průběžné verze budou vydávány každých šest měsíců.

Kde stáhnout JDK 11

JDK 11 si můžete stáhnout z Oracle Technology Network.

Nové funkce v prostředí Java 11 JDK

JDK 11 má 16 nových funkcí:

  • Vylepšení vnitřních prvků Aarch64 s implementací nových vnitřních prvků prolang.Math funkce sin, cos a log na procesorech Aarch64. Tento návrh zdůrazňuje specializované vzory kódů specifických pro architekturu CPU, které zlepšují výkon aplikací a srovnávacích testů.
  • Řízení přístupu založené na hnízdě zavádí hnízda, kontext řízení přístupu, který je v souladu s představou vnořených typů v jazyce Java. Hnízda umožňují třídám, které jsou logicky součástí stejné entity kódu, ale jsou kompilovány do odlišných souborů tříd, aby si navzájem umožňovaly přístup k soukromým členům, aniž by museli kompilátoři vkládat metody mostu rozšiřující přístup.
  • Transport Layer Security (TLS) 1.3, ve kterém bude tato generální oprava protokolu TLS začleněna do JDK 11, což nabízí významné výhody v oblasti zabezpečení a výkonu. Není však cílem podporovat všechny funkce TLS 1.3. Aby se minimalizovalo riziko nekompatibility, bude TLS 1.3 implicitně implementovat režim zpětné kompatibility. Aplikace mohou tento režim podle potřeby vypnout nebo zapnout.
  • Ukončení podpory javascriptového enginu Nashorn spolu s nástrojem JJS s úmyslem je v budoucnu odstranit. Vzhledem k rychlému tempu, jakým byly jazykové konstrukce a API ECMAScript přizpůsobeny a upraveny, považuje společnost Oracle za náročné udržet Nashorn.
  • Klient HTTP (Standard), který standardizuje inkubovaného klienta HTTP API představeného v JDK 9 a aktualizovaného v JDK 10. API nabízí neblokující sémantiku požadavků a odpovědí prostřednictvím CompleteableFutures, které lze propojit za účelem spuštění závislých akcí. Implementace, nyní asynchronní, byla téměř úplně přepsána po inkubaci v JDK 9 a 10. Koncept RX Flow byl do implementace vložen, což eliminovalo mnoho vlastních konceptů potřebných pro podporu HTTP / 2. Tok dat lze nyní snáze vysledovat, od vydavatelů požadavků na úrovni uživatelů a vydavatelů odpovědí po základní soket. To snižuje složitost a maximalizuje možnost opětovného použití mezi HTTP / 1 a HTTP / 2.
  • Sběrač odpadků Epsilon, účtovaný jako sběrač „no-op“, bude zpracovávat přidělení paměti bez implementace jakýchkoli mechanismů rekultivace paměti. Mezi případy použití Epsilonu patří testování výkonu, tlaku paměti a rozhraní virtuálního stroje. Mohlo by to být také použito pro krátkodobé práce.
  • Syntaxe lokální proměnné pro parametry lambda by měla sladit syntaxi formální deklarace parametru v implicitně zadaném výrazu se syntaxí deklarace místní proměnné. To by umožnilo var použít při deklaraci formálních parametrů implicitně zadaných výrazů lambda.
  • Formát souboru třídy Java bude rozšířen, aby podporoval nový formulář konstantního fondu, CONSTANT_Dynamic. Cílem je snížit náklady a narušení vývoje nových forem materializovatelných omezení třídních souborů.
  • Klíčová dohoda s kryptografií Curve25519 a Curve448 by měla být efektivnější a bezpečnější než stávající schéma eliptické křivky Diffie-Hellman. Dvě eliptické křivky, Curve25510 a Curve448, jsou vhodné pro implementaci v konstantním čase a skalární násobení bez výjimek, které je podle IETF odolnější vůči řadě útoků postranními kanály, včetně časování a útoků v mezipaměti. Cíle návrhu zahrnují API a implementaci klíčového schématu dohody, jakož i vývoj implementace nezávislé na platformě a plné Java. Existuje však riziko ve složitosti a jemnosti implementace modulární aritmetiky, která je součástí návrhu.
  • Flight Recorder by poskytoval rámec pro sběr dat s nízkou režií pro řešení problémů jak s Java aplikacemi, tak s HotSpot JVM. Flight Recorder je součástí komerčního JDK společnosti Oracle, ale jeho zdrojový kód by byl přesunut do otevřeného úložiště, aby byla tato funkce obecně dostupná. Iclouded by byla rozhraní API pro produkci a spotřebu dat jako událostí, poskytující mechanismus vyrovnávací paměti a formát binárních dat a umožňující konfiguraci a filtrování událostí. Návrh rovněž požaduje poskytnutí událostí pro knihovny OS, HotSpot a JDK.
  • Upgradování rozhraní API platformy na podporu Unicode verze 10.0, čímž bude Java stále aktuální. Podpora se očekává v následujících třídách:
    • Charakter aTětiva v jazyk balík
    • NumericShaper v awt.font balík
    • Bidi, BreakIterator, a Normalizátor v text balík
  • Implementace kryptografických algoritmů ChaCha20 a Poly1305. ChaCha2020 je relativně nová proudová šifra, která může nahradit starší, nejistou proudovou šifru R4. ChaCha20 bude spárován s autentizátorem Poly1305. Byly by poskytnuty šifrovací implementace ChaCha20 a ChaCha20-Poly1305 s algoritmy implementovanými v poskytovateli SunJCE (Java Cryptography Extension) pomocí crypto.CipherSpi API.
  • Vylepšení spouštěče Java pro spuštění programu dodávaného jako jeden soubor zdrojového kódu Java, aby tyto programy mohly běžet přímo ze zdroje. Programy s jedním souborem jsou běžné při psaní malých utilit nebo pro vývojáře v raných fázích učení jazyka Java. Jeden zdrojový soubor se také může zkompilovat do více souborů třídy, což přidá režii balení. V těchto kontextech je potřeba kompilovat program před spuštěním pouze nepotřebným krokem založeným na tradici.
  • Profilování haldy s nízkou režií, poskytující způsob vzorkování přidělení haldy Java, přístupné prostřednictvím rozhraní JVM Tool. Cílem tohoto úsilí je získat informace o těchto alokacích způsobem, který má nízkou režii, lze k nim přistupovat prostřednictvím programového rozhraní a lze vzorkovat všechna alokace. Cíle jsou také nezávislost implementace a poskytování údajů o živých a mrtvých hromadách. Špatná správa haldy může vést k vyčerpání haldy a mlácení odpadu. Většina nástrojů, které to řeší, postrádá web volání pro konkrétní alokace, informace, které mohou být důležité pro ladění problémů s pamětí.
  • Ukončení podpory nástrojů Pack200 a Unpack200 a API Pack200 v systému Windows util.jar. Pack200 je schéma komprese souborů .jar, jehož cílem je snížit požadavky na disk a šířku pásma pro balení, přenos a doručování aplikací. Náklady na údržbu a nízké využití neospravedlňují jejich udržení, říkají vedoucí projektů.
  • Z Garbage Collector (ZGC), experimentální sběrač odpadků s nízkou latencí, který zpracovává hromady od relativně malých po velmi velké hromady, které mají velikost mnoha terabajtů. Při použití ZGC by doby pauzy neměly překročit 10 ms a nemělo by dojít ke snížení propustnosti aplikace o více než 15 procent ve srovnání s použitím kolektoru G1. ZGC také vytváří základ pro budoucí funkce a optimalizace. Linux / x64 bude první platformou, která získá podporu ZGC.

Co bylo odstraněno z Java JDK 11

Moduly Java EE EE a CORBA byly v prostředí Java SE 9 zastaralé, s úmyslem je odstranit v pozdější verzi - což je JDK 11.

Java SE 6, vydaná v prosinci 2006, zahrnovala kompletní zásobník webových služeb pro pohodlí vývojářů - včetně čtyř technologií vytvořených pro platformu Java EE: JAX-WS (Java API pro webové služby založené na XML, JAXB (Java Architecture for XML Binding), JAF (JavaBeans Activation Framework) a Common Annotations for Java. Postupem času se vyvíjely verze Java EE, což vedlo k potížím v prostředí Java SE, jako je zahrnutí technologií nepodstatných pro prostředí Java SE a obtížnější údržba napříč dvěma prostředími Java edice. Se samostatnými verzemi technologií Java EE, které jsou k dispozici na webech třetích stran, společnost Oracle tvrdí, že již není nutné je mít v prostředí Java SE nebo JDK.

Některé aplikace se přesto nebudou kompilovat ani spouštět, pokud se spoléhají na okamžitou podporu v JDK pro rozhraní API a nástroje Java EE. Při migraci JDK 6, 7 nebo 8 na pozdější vydání by vznikly binární a zdrojové nekompatibility. Oracle říká, že vývojáři ovlivnění těmito riziky mohou místo toho nasadit alternativní verze technologií Java EE.

CORBA sahá do 90. let a Oracle tvrdí, že dnes není o vývoj moderních Java aplikací s CORBA významný zájem. A náklady na údržbu podpory CORBA převažují nad jejími zbývajícími výhodami.

Odstranění CORBA ale riskuje, že bude mít implementace CORBA, které se nespustí, pokud obsahují pouze podmnožinu API CORBA a očekávají, že zbytek poskytne JDK. Neexistuje žádná verze CORBA od jiného výrobce a není jisté, zda by třetí strana mohla převzít údržbu CORBA API.

JavaFX se odstraňuje, takže není vázán na plán aktualizací dvakrát ročně Java JDK.

$config[zx-auto] not found$config[zx-overlay] not found