Programiranje

Java JDK 11: Vse nove funkcije so zdaj na voljo

Java Development Kit (JDK) 11 je zdaj splošno na voljo in pripravljen za proizvodno uporabo, kar prinaša izboljšave produktivnosti in API odjemalca HTTP, ki implementira HTTP / 2.

Različica 11 Java Standard Edition (SE) ima 16 glavnih sprememb funkcij. Java 11 izgubi tudi nekatere zmogljivosti z odstranitvijo modulov CORBA in Java EE (nedavno preimenovana v Jakarta EE), pa tudi z odstranitvijo JavaFX, ki je zdaj na voljo kot samostojna tehnologija.

V Javi 11 je Oracle razdelil glavno repozitorij jdk / jdk na stabilizacijsko repozitorij jdk / jdk11. Spremembe, potisnjene v jdk / jdk ali jdk / odjemalec, so zdaj označene za JDK 12. Skladišče za stabilizacijo lahko sprejme izbrane popravke napak in, če je odobreno, pozne izboljšave v skladu s postopkom izdaje JDK.

Najnovejša različica Oraclove implementacije standardne Jave je izdaja LTS (Long Term Support - Long Term Support), ki jo bo Oracle komercialno podpiral vsaj osem let. Popravki napak in varnostne posodobitve bodo na voljo do leta 2026. Nove izdaje LTS bodo predvidoma vsaka tri leta, JDK 17, ki naj bi izšel leta 2021, pa naj bi bila naslednja izdaja LTS. Začasne izdaje bodo prihajale vsakih šest mesecev.

Kje prenesti JDK 11

JDK 11 lahko prenesete iz Oracle Technology Network.

Nove funkcije Java 11 JDK

JDK 11 ima 16 novih funkcij:

  • Izboljšanje notranjih lastnosti Aarch64 z uvedbo novih notranjih lastnosti zalang.Math funkcije sin, cos in log na procesorjih Aarch64. Ta predlog poudarja posebne vzorce kode, specifične za arhitekturo CPU, ki izboljšujejo zmogljivost aplikacij in primerjalnih testov.
  • Nadzor dostopa na osnovi gnezda uvaja gnezda, kontekst nadzora dostopa, ki se ujema s pojmom ugnezdenih vrst v jeziku Java. Gnezdi omogočajo razredom, ki so logično del iste kode, vendar so zbrani v ločene datoteke razredov, da dostopajo do zasebnih članov drug drugega, ne da bi morali prevajalniki vstavljati metode povezovanja razširitve dostopnosti.
  • Transport Layer Security (TLS) 1.3, v katerem bo ta prenova protokola TLS vgrajena v JDK 11, kar ponuja pomembne prednosti glede varnosti in učinkovitosti. Vendar ni cilj podpirati vse funkcije TLS 1.3. Da bi zmanjšali tveganje nezdružljivosti, bo TLS 1.3 privzeto uvedel način združljivosti s nazaj. Aplikacije lahko ta način po želji izklopijo ali vklopijo.
  • Opustitev motorja JavaScript Nashorn, skupaj z orodjem JJS, z namenom, da bi jih v prihodnosti odstranili. Oracle meni, da je Nashorna težko vzdrževati, glede na hiter tempo, s katerim so bili prilagojeni in spremenjeni jezikovni konstrukti in API-ji ECMAScript.
  • HTTP Client (Standard), ki standardizira inkubirani odjemalec HTTP API, uveden v JDK 9 in posodobljen v JDK 10. API ponuja neblokirajočo semantiko zahtev in odzivov prek CompleteableFutures, ki se lahko poveže s sprožitvijo odvisnih dejanj. Izvedba, ki je zdaj asinhrona, je bila po inkubaciji v JDKs 9 in 10. skoraj v celoti prepisana. Koncept RX Flow je bil potisnjen v izvedbo in je odpravil številne koncepte po meri, potrebne za podporo HTTP / 2. Zdaj je lažje slediti pretoku podatkov, od založnikov zahtev na ravni uporabnika in založnikov odzivov do osnovne vtičnice. To zmanjša zapletenost in poveča možnost ponovne uporabe med HTTP / 1 in HTTP / 2.
  • Zbiralnik smeti Epsilon, ki se obračunava kot zbiralnik "ne-op", bo obravnaval dodeljevanje pomnilnika, ne da bi uporabil dejanske mehanizme za obnovo pomnilnika. Primeri uporabe Epsilona vključujejo preskušanje zmogljivosti, pritisk pomnilnika in vmesnik navideznega stroja. Lahko se uporablja tudi za kratkotrajna dela.
  • Sintaksa lokalne spremenljivke za lambda parametre bi morala sintakso izjave formalnega parametra v implicitno vtipkanem izrazu uskladiti s sintakso izjave lokalne spremenljivke. To bi omogočilo var za uporabo pri razglasitvi formalnih parametrov implicitno vtipkanih lambda izrazov.
  • Oblika datoteke razreda Java bo razširjena tako, da bo podpirala nov obrazec konstantnega področja, CONSTANT_Dinamično. Cilj je zmanjšati stroške in motnje pri razvoju novih oblik uresničljivih omejitev datotek razreda.
  • Ključni dogovor s kriptografijo Curve25519 in Curve448 mora biti učinkovitejši in varnejši od obstoječe eliptične krivulje Diffie-Hellmanove sheme. Dve eliptični krivulji, Curve25510 in Curve448, omogočata konstantno izvajanje in skalarno množenje brez izjem, ki je bolj odporna na vrsto napadov stranskih kanalov, vključno s časovnimi napadi in napadi predpomnilnika, v skladu z IETF. Cilji predloga vključujejo API in izvajanje ključne sheme dogovorov, pa tudi razvoj od platforme neodvisne implementacije v celoti Java. Kljub temu obstaja zapletenost in prefinjenost modularne aritmetične izvedbe, ki je del predloga.
  • Flight Recorder bi zagotovil ogrodje za zbiranje podatkov z nizkimi stroški za odpravljanje težav tako v programih Java kot v HotSpot JVM. Flight Recorder je bila značilnost Oraclovega komercialnega JDK, vendar bi se njegova izvorna koda preselila v odprto skladišče, da bi bila funkcija splošno dostopna. Iclouded bi bil API-ji za izdelavo in uporabo podatkov kot dogodkov, ki bi zagotavljali mehanizem medpomnilnika in format binarnih podatkov ter omogočali konfiguracijo in filtriranje dogodkov. Predlog poziva tudi k zagotavljanju dogodkov za knjižnice OS, HotSpot in JDK.
  • Nadgradnja API-jev platforme za podporo Unicode različice 10.0, s čimer je Java posodobljena. Podpora se pričakuje v naslednjih razredih:
    • Značaj inVrvica v lang paket
    • NumericShaper v awt.font paket
    • Bidi, BreakIterator, in Normalizator v besedilo paket
  • Izvajanje kriptografskih algoritmov ChaCha20 in Poly1305. ChaCha2020 je razmeroma nova pretočna šifra, ki lahko nadomesti starejšo, negotovo R4 pretočno šifro. ChaCha20 bi bil seznanjen z avtentifikatorjem Poly1305. Zagotovljene bi bile izvedbe šifre ChaCha20 in ChaCha20-Poly1305 z algoritmi, ki se izvajajo v ponudniku SunJCE (Java Cryptography Extension) z uporabo crypto.CipherSpi API.
  • Izboljšanje zaganjalnika Java za zagon programa, ki je priložen kot ena datoteka izvorne kode Java, tako da se lahko ti programi izvajajo neposredno iz vira. Programi z eno datoteko so pogosti pri pisanju majhnih pripomočkov ali za razvijalce v zgodnjih fazah učenja Jave. Tudi ena izvorna datoteka se lahko prevede v več datotek razreda, kar doda dodatne stroške embalaže. V teh okoliščinah je sestavljanje programa pred zagonom le nepotreben korak, ki temelji na tradiciji.
  • Profiliranje kopice z nizkimi stroški, ki ponuja način vzorčenja dodeljevanja kopice Java, dostopen prek vmesnika orodja JVM. Cilj tega prizadevanja je pridobiti informacije o teh dodelitvah na način, ki ni primeren, do katerega lahko dostopate prek programskega vmesnika in lahko vzorčite vse dodelitve. Cilj sta tudi neodvisnost izvajanja in zagotavljanje podatkov o živih in mrtvih odlagališčih. Slabo upravljanje s kupom lahko povzroči izčrpavanje kupa in razbijanje smeti. Večina orodij, ki to rešujejo, nima mesta za klice za določene dodelitve, informacije, ki so lahko ključne za odpravljanje težav s pomnilnikom.
  • Opustitev orodij Pack200 in Unpack200 ter API Pack200 v util.jar. Pack200 je stiskalna shema za datoteke .jar, katere namen je zmanjšati zahteve glede diska in pasovne širine za pakiranje, prenos in dostavo aplikacij. Vodje projektov menijo, da stroški vzdrževanja in nizka uporaba ne opravičujejo njihovega zadrževanja.
  • Zbiralnik smeti Z (ZGC), eksperimentalni zbiralnik smeti z majhno zakasnitvijo, za obdelavo kopic, ki segajo od sorazmerno majhnih do zelo velikih kupčkov, veliko veliko terabajtov. Z uporabo ZGC časi premorov ne smejo presegati 10 ms in ne sme biti več kot 15-odstotno zmanjšanje pretočnosti aplikacije v primerjavi z uporabo zbiralnika G1. ZGC postavlja tudi temelje za prihodnje funkcije in optimizacije. Linux / x64 bo prva platforma, ki bo dobila podporo za ZGC.

Kaj je odstranjeno iz Java JDK 11

Modula Java EE EE in CORBA sta bila zastarela v Javi SE 9 z namenom, da ju odstranita v kasnejši izdaji - to je JDK 11.

Java SE 6, izdan decembra 2006, je vključeval celoten sklop spletnih storitev za udobje razvijalcev - vključno s štirimi tehnologijami, zgrajenimi za platformo Java EE: JAX-WS (Java API za spletne storitve, ki temeljijo na XML, JAXB (Java Architecture for XML Binding), JAF (JavaBeans Activation Framework) in Common Annotations for Java. Sčasoma so se različice Java EE razvijale, kar je povzročalo težave v Java SE, na primer vključevanje tehnologij, ki niso pomembne za Java SE, in težje vzdrževanje v obeh Java Z neodvisnimi različicami tehnologij Java EE, ki so na voljo na spletnih mestih drugih proizvajalcev, Oracle pravi, da jih ni več treba imeti v Java SE ali JDK.

Kljub temu se nekatere aplikacije ne bodo prevedle ali zagnale, če se zanašajo na trenutno podporo v API-jih in orodjih JDK za Java EE. Binarne in izvorne nezdružljivosti bi se pojavile pri selitvi JDK 6, 7 ali 8 v kasnejšo različico. Oracle pravi, da lahko razvijalci, ki jih prizadenejo ta tveganja, namesto tega uvedejo nadomestne različice tehnologij Java EE.

CORBA sega v devetdeseta leta in Oracle pravi, da danes ni večjega zanimanja za razvoj sodobnih aplikacij Java s CORBO. In stroški vzdrževanja podpore CORBA presegajo preostale koristi.

Toda odstranitev CORBA tvega, da se izvedbe CORBA ne bodo izvajale, če vključujejo le podnabor API-jev CORBA in pričakujejo, da bo JDK zagotovil preostanek. Ne obstaja različica CORBA tretje osebe in ni gotovo, ali bi lahko tretja oseba prevzela vzdrževanje API-ja CORBA.

JavaFX se odstrani, zato ni vezan na dvakrat letni urnik posodobitev Java JDK.

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