Programovanie

Java JDK 11: Všetky nové funkcie sú teraz k dispozícii

Java Development Kit (JDK) 11 je teraz všeobecne dostupná a pripravená na produkčné použitie, prináša vylepšenia produktivity a rozhranie API klienta HTTP, ktoré implementuje protokol HTTP / 2.

Verzia 11 Java Standard Edition (SE) má 16 hlavných zmien funkcií. Java 11 tiež stráca niektoré schopnosti odstránením modulov CORBA a Java EE (nedávno premenovaných na Jakarta EE), ako aj odstránením JavaFX, ktorý je teraz k dispozícii ako samostatná technológia.

V prostredí Java 11 spoločnosť Oracle rozložila hlavné úložisko jdk / jdk na stabilizačné úložisko jdk / jdk11. Zmeny posunuté do jdk / jdk alebo jdk / client sú teraz označené pre JDK 12. Stabilizačné úložisko môže prijímať vybrané opravy chýb a ak je schválené, neskoré vylepšenia podľa procesu vydania JDK.

Poslednou verziou implementácie štandardnej Javy spoločnosťou Oracle je vydanie Long Term Support (LTS), ktoré bude mať komerčnú podporu od spoločnosti Oracle najmenej osem rokov. Opravy chýb a bezpečnostné aktualizácie budú ponúkané do roku 2026. Nové vydania LTS sa majú vydávať každé tri roky, JDK 17, ktorý sa má vydať v roku 2021, má byť ďalším vydaním LTS. Priebežné správy budú zverejňované každých šesť mesiacov.

Kde stiahnuť JDK 11

Môžete si stiahnuť JDK 11 zo siete Oracle Technology Network.

Nové funkcie v prostredí Java 11 JDK

JDK 11 má 16 nových funkcií:

  • Vylepšenie vnútorných Aarch64 s implementáciou nových vnútorných riešení prelang.Math funkcie sin, cos a log na procesoroch Aarch64. Tento návrh zdôrazňuje špecializované vzory kódov špecifických pre architektúru CPU, ktoré zlepšujú výkon aplikácií a testovacích štandardov.
  • Hniezdové riadenie prístupu zavádza hniezda, kontext riadenia prístupu, ktorý je v súlade s predstavou vnorených typov v jazyku Java. Hniezda umožňujú triedam, ktoré sú logicky súčasťou tej istej kódovej entity, ale sú kompilované do samostatných súborov tried, aby mali prístup k svojim súkromným členom bez toho, aby museli prekladače vkladať metódy rozširovania prístupnosti.
  • Transport Layer Security (TLS) 1.3, v ktorej bude táto generálna oprava protokolu TLS začlenená do JDK 11, čo ponúka významné bezpečnostné a výkonové výhody. Nie je však cieľom podporovať všetky funkcie protokolu TLS 1.3. Aby sa minimalizovalo riziko nekompatibility, bude TLS 1.3 štandardne implementovať režim spätnej kompatibility. Aplikácie môžu tento režim podľa potreby vypnúť alebo zapnúť.
  • Ukončenie podpory nástroja JavaScript Nashorn spolu s nástrojom JJS so zámerom ich v budúcnosti odstrániť. Oracle považuje spoločnosť Nashorn za náročnú na údržbu vzhľadom na rýchle tempo, ktorým boli prispôsobené a upravené jazykové konštrukcie a API rozhrania ECMAScript.
  • HTTP Client (Standard), ktorý štandardizuje inkubovaného klienta HTTP API zavedeného v JDK 9 a aktualizovaného v JDK 10. API ponúka neblokujúcu sémantiku požiadaviek a odpovedí prostredníctvom CompleteableFutures, ktoré možno prepojiť na spustenie závislých akcií. Implementácia, ktorá je teraz asynchrónna, bola takmer celá prepísaná po inkubácii v súboroch JDK 9 a 10. Do implementácie bol vložený koncept RX Flow, ktorý eliminuje množstvo vlastných konceptov potrebných na podporu protokolu HTTP / 2. Tok údajov je teraz možné ľahšie vysledovať, od vydavateľov požiadaviek na úrovni používateľov a vydavateľov odpovedí až po príslušné sokety. Toto znižuje zložitosť a maximalizuje možnosť opätovného použitia medzi HTTP / 1 a HTTP / 2.
  • Zberač odpadu Epsilon, účtovaný ako zberač „no-op“, bude spracovávať alokáciu pamäte bez implementácie akýchkoľvek skutočných mechanizmov rekultivácie pamäte. Medzi prípady použitia spoločnosti Epsilon patrí testovanie výkonu, tlaku pamäte a rozhrania virtuálneho stroja. Mohlo by sa to tiež použiť na krátkodobé zamestnania.
  • Syntax lokálnej premennej pre parametre lambda by mala zosúladiť syntax formálnej deklarácie parametra v implicitne zadanom výraze so syntaxou deklarácie lokálnej premennej. To by umožnilo var sa použije pri deklarácii formálnych parametrov implicitne zadaných výrazov lambda.
  • Formát súborov triedy Java bude rozšírený tak, aby podporoval nový tvar konštantnej skupiny, CONSTANT_Dynamic. Cieľom je znížiť náklady a prerušenie vývoja nových foriem realizovateľných obmedzení súborov súborov.
  • Kľúčová dohoda s kryptografiou Curve25519 a Curve448 by mala byť efektívnejšia a bezpečnejšia ako existujúca schéma eliptickej krivky Diffie-Hellman. Dve eliptické krivky Curve25510 a Curve448 sa dajú implementovať v konštantnom čase a skalárne násobenie bez výnimiek, ktoré je podľa IETF odolnejšie voči radu útokov postranným kanálom, vrátane časovania a útokov cache. Ciele návrhu zahŕňajú API a implementáciu kľúčovej schémy dohody, ako aj vývoj implementácie nezávislej od platformy a celej Javy. Existuje však riziko v zložitosti a jemnosti implementácie modulárneho aritmetického kódu, ktorá je súčasťou návrhu.
  • Flight Recorder by poskytoval rámec pre zber údajov s nízkym režijným podielom na riešenie problémov s Java aplikáciami aj s HotSpot JVM. Flight Recorder je súčasťou komerčného JDK spoločnosti Oracle, jeho zdrojový kód by však bol presunutý do otvoreného úložiska, aby bola táto funkcia všeobecne dostupná. Iclouded by boli API na produkciu a spotrebu dát ako udalostí, ktoré by poskytovali mechanizmus vyrovnávacej pamäte a formát binárnych údajov a umožňovali konfiguráciu a filtrovanie udalostí. Návrh tiež požaduje zabezpečenie udalostí pre knižnice OS, HotSpot a JDK.
  • Inovácia rozhraní API platformy na podporu Unicode verzie 10.0, čím sa zabezpečí aktuálnosť Javy. Podpora sa očakáva v nasledujúcich triedach:
    • Postava aString v lang balíček
    • NumericShaper v awt.font balíček
    • Bidi, BreakIteratora Normalizátor v text balíček
  • Implementácia kryptografických algoritmov ChaCha20 a Poly1305. ChaCha2020 je relatívne nová prúdová šifra, ktorá môže nahradiť staršiu, nezabezpečenú prúdovú šifru R4. ChaCha20 by bola spárovaná s autentifikátorom Poly1305. K dispozícii by boli šifrovacie implementácie ChaCha20 a ChaCha20-Poly1305 s algoritmami implementovanými v poskytovateľovi SunJCE (Java Cryptography Extension) pomocou crypto.CipherSpi API.
  • Vylepšenie spúšťača Java na spustenie programu dodávaného ako jeden súbor zdrojového kódu Java, aby tieto programy mohli bežať priamo zo zdroja. Programy s jedným súborom sú bežné pri písaní malých obslužných programov alebo pre vývojárov v raných fázach učenia sa jazyka Java. Jeden zdrojový súbor sa tiež môže skompilovať do viacerých súborov triedy, čo dodáva režijné náklady na balenie. V týchto kontextoch je potreba zostaviť program pred spustením iba nepotrebný krok založený na tradícii.
  • Profilovanie haldy s nízkymi režijnými nákladmi, ktoré poskytuje spôsob vzorkovania alokácií haldy Java, prístupných prostredníctvom rozhrania JVM Tool Interface. Cieľom tohto snaženia je získať informácie o týchto alokáciách spôsobom, ktorý je nenáročný na réžiu, je k nim prístup cez programové rozhranie a je možné vzorkovať všetky alokácie. Cieľmi sú tiež nezávislosť implementácie a poskytovanie údajov o živých a mŕtvych hromadách. Zlé riadenie haldy môže viesť k vyčerpaniu haldy a vymršťovaniu odpadu. Väčšina nástrojov, ktoré to riešia, nemá volanie pre konkrétne pridelenia, teda informácie, ktoré môžu byť rozhodujúce pri ladení problémov s pamäťou.
  • Ukončenie podpory nástrojov Pack200 a Unpack200 a API Pack200 v systéme Windows util.jar. Pack200 je komprimačná schéma pre súbory .jar, ktorej cieľom je znížiť požiadavky na disk a šírku pásma pri balení, prenose a doručení aplikácie. Vedúci projektu tvrdia, že náklady na údržbu a nízke použitie neospravedlňujú ich udržanie.
  • Z Garbage Collector (ZGC), experimentálny zberač odpadu s nízkou latenciou, ktorý umožňuje manipuláciu s hromadami od relatívne malých až po veľmi veľké hromady, ktoré majú veľkosť mnohých terabajtov. Pri použití ZGC by doby pauzy nemali presiahnuť 10 ms a v porovnaní s použitím kolektora G1 by nemalo dôjsť k zníženiu priepustnosti aplikácie o viac ako 15 percent. ZGC tiež vytvára základ pre budúce funkcie a optimalizácie. Linux / x64 bude prvou platformou, ktorá získa podporu ZGC.

Čo je odstránené z Java JDK 11

Moduly Java EE EE a CORBA boli v prostredí Java SE 9 zastarané, s úmyslom ich odstrániť v neskoršom vydaní - ktorým je JDK 11.

Java SE 6, uvedený na trh v decembri 2006, obsahoval kompletný balík webových služieb pre pohodlie vývojárov - vrátane štyroch technológií vytvorených pre platformu Java EE: JAX-WS (Java API pre webové služby založené na XML, JAXB (Java Architecture for XML Binding), JAF (JavaBeans Activation Framework) a Common Annotations for Java. Postupom času sa vyvíjali verzie Java EE, čo viedlo k ťažkostiam v prostredí Java SE, ako je zahrnutie technológií nepodstatných pre Java SE a zložitejšia údržba v rámci týchto dvoch prostredí Java. So samostatnými verziami technológií Java EE dostupných z webov tretích strán spoločnosť Oracle tvrdí, že už nie je potrebné ich mať v prostredí Java SE alebo JDK.

Niektoré aplikácie sa napriek tomu nebudú kompilovať alebo spustiť, ak sa spoliehajú na out-of-the-box podporu v JDK pre Java EE API a nástroje. Pri migrácii JDK 6, 7 alebo 8 na neskoršie vydanie by vznikli binárne a zdrojové nekompatibility. Spoločnosť Oracle tvrdí, že vývojári ovplyvnení týmito rizikami môžu namiesto toho nasadiť alternatívne verzie technológií Java EE.

CORBA sa datuje do 90. rokov 20. storočia a spoločnosť Oracle tvrdí, že dnes už neexistuje výrazný záujem o vývoj moderných aplikácií Java pomocou CORBA. A náklady na údržbu podpory CORBA prevyšujú jej zostávajúce výhody.

Odstránenie CORBA ale riskuje, že bude mať implementácie CORBA, ktoré sa nespustia, ak obsahujú iba podmnožinu API CORBA a očakávajú, že zvyšok poskytne JDK. K dispozícii nie je verzia CORBA od iného výrobcu a nie je isté, či by údržbu produktu CORBA API mohla prevziať tretia strana.

JavaFX sa odstraňuje, takže nie je viazaný na plán aktualizácií dvakrát za rok Java JDK.