Programavimas

„Java JDK 11“: dabar yra visos naujos funkcijos

„Java Development Kit“ (JDK) 11 dabar yra paprastai prieinamas ir paruoštas naudoti gamyboje, užtikrinant produktyvumo patobulinimus ir HTTP kliento API, įgyvendinančią HTTP / 2.

„Java Standard Edition“ (SE) 11 versijoje yra 16 pagrindinių funkcijų pakeitimų. „Java 11“ taip pat praranda kai kurias galimybes pašalindama CORBA ir „Java EE“ (neseniai pervadinta į „Jakarta EE“) modulius, taip pat pašalindama „JavaFX“, kuri dabar prieinama kaip atskira technologija.

„Java 11“ sistemoje „Oracle“ pagrindinės linijos saugyklą „jdk / jdk“ sudarė į „jdk / jdk11“ stabilizavimo saugyklą. Pakeitimai, nukreipti į „jdk“ / „jdk“ arba „jdk“ / „klientas“, dabar pažymėti kaip „JDK 12“. Stabilizavimo saugykla gali priimti pasirinktus klaidų taisymus ir, jei bus patvirtinta, vėlyvus patobulinimus pagal JDK išleidimo procesą.

Naujausia „Oracle“ standartinio „Java“ diegimo versija yra ilgalaikio palaikymo (LTS) leidimas, kurį „Oracle“ palaikys komerciniu būdu mažiausiai aštuonerius metus. Klaidų taisymai ir saugos atnaujinimai bus siūlomi iki 2026 m. Nauji LTS leidimai bus pateikiami kas trejus metus, o kitas „LTS“ leidimas bus paskelbtas 2021 m. JDK 17. Tarpiniai leidimai bus skelbiami kas pusmetį.

Kur atsisiųsti JDK 11

JDK 11 galite atsisiųsti iš „Oracle Technology Network“.

Naujos „Java 11 JDK“ funkcijos

„JDK 11“ turi 16 naujų funkcijų:

  • Patobulinti „Aarch64“ vidų, įdiegiant naujus „Windows“ vidinius elementuslang.Math sin, cos ir log funkcijos Aarch64 procesoriuose. Šiame pasiūlyme pabrėžiami specializuoti procesoriaus architektūros specifiniai kodų modeliai, kurie pagerina programų ir etalonų našumą.
  • „Nest“ pagrindu sukurta prieigos kontrolė pristato lizdus - prieigos valdymo kontekstą, suderinamą su „Java“ kalba įdėtų tipų sąvoka. Lizdai leidžia klasėms, kurios logiškai yra to paties kodo elemento dalis, tačiau sudarytos atskiriems klasių failams, kad galėtų pasiekti vienas kito privačius narius nereikalaujant kompiliatorių įterpti prieinamumą plečiančių tiltų metodų.
  • Transporto lygmens saugumas (TLS) 1.3, kuriame šis TLS protokolo remontas bus pritaikytas JDK 11, suteikdamas didelę saugumo ir našumo naudą. Tačiau nėra tikslo palaikyti visas TLS 1.3 savybes. Kad būtų sumažinta nesuderinamumo rizika, pagal numatytuosius nustatymus TLS 1.3 įdiegs atgalinio suderinamumo režimą. Programos gali išjungti arba įjungti šį režimą pagal pageidavimą.
  • Nebeveikia „Nashorn JavaScript“ variklio kartu su JJS įrankiu, siekiant ateityje juos pašalinti. „Oracle“ pastebėjo, kad Nashorną sunku išlaikyti, atsižvelgiant į greitą ECMAScript kalbos konstrukcijos ir API pritaikymo ir modifikavimo tempą.
  • HTTP klientas (standartinis), kuris standartizuoja inkubuotą HTTP API klientą, pristatytą JDK 9 ir atnaujintą JDK 10. API siūlo blokavimo užklausų ir atsakymų semantiką per „CompleteableFutures“, kuris gali būti susietas su priklausomais veiksmais. Įdiegimas, kuris dabar yra asinchroninis, buvo beveik visiškai perrašytas, po inkubavimo 9 ir 10 JDK. RX srauto koncepcija buvo įdiegta įgyvendinant, pašalinant daugybę tinkintų sąvokų, reikalingų palaikyti HTTP / 2. Duomenų srautą dabar galima lengviau atsekti: nuo vartotojo lygio užklausų leidėjų ir atsakymų leidėjų iki pagrindinio lizdo. Tai sumažina sudėtingumą ir padidina pakartotinio naudojimo galimybę tarp HTTP / 1 ir HTTP / 2.
  • „Epsilon“ šiukšlių surinkėjas, už kurį pranešama kaip „be opciono“ surinkėjas, valdys atminties paskirstymą neįgyvendindamas jokių faktinių atminties atkūrimo mechanizmų. „Epsilon“ naudojimo atvejai apima našumo, atminties slėgio ir virtualiosios mašinos sąsajos testavimą. Jis taip pat galėtų būti naudojamas trumpalaikiams darbams.
  • Lambda parametrų vietinio kintamojo sintaksė turėtų sulyginti netiesiogiai įvestos išraiškos formalios parametrų deklaracijos sintaksę su vietinio kintamojo deklaracijos sintakse. Tai leistų var naudoti deklaruojant formaliai netiesiogiai įvestų lambda išraiškų parametrus.
  • „Java“ klasės failo formatas bus išplėstas, kad būtų palaikoma nauja pastoviojo baseino forma, CONSTANT_Dynamic. Tikslas yra sumažinti naujų materializuojamų klasės bylos apribojimų formavimo išlaidas ir trukdžius.
  • Pagrindinis susitarimas su „Curve25519“ ir „Curve448“ kriptografija turėtų būti efektyvesnis ir saugesnis nei esamos elipsinės kreivės Diffie-Hellmano schema. Pagal IETF, dvi elipsės kreivės „Curve25510“ ir „Curve448“ yra pritaikomos pastoviu laiku ir be išimčių skaliariniam dauginimui, kuris yra atsparesnis įvairioms šoninių kanalų atakoms, įskaitant laiko ir talpyklos išpuolius. Pasiūlymo tikslai yra API ir pagrindinės sutarties schemos įgyvendinimas, taip pat nuo platformos nepriklausomo „Java“ diegimas. Vis dėlto yra pavojus dėl sudėtingo ir subtilaus modulinio aritmetinio įgyvendinimo, pateikto kaip pasiūlymo dalis.
  • Skrydžio savirašis suteiktų duomenų, susijusių su mažomis pridėtinėmis sąnaudomis, gedimams šalinti tiek „Java“ programoms, tiek „HotSpot JVM“. Skrydžio savirašis buvo „Oracle“ komercinio JDK bruožas, tačiau jo šaltinio kodas būtų perkeltas į atvirą saugyklą, kad ši funkcija taptų prieinama. „Iclouded“ būtų API, leidžianti kurti ir vartoti duomenis kaip įvykius, suteikiant buferio mechanizmą ir dvejetainių duomenų formatą bei įgalinant konfigūruoti ir filtruoti įvykius. Pasiūlyme taip pat raginama renginius organizuoti OS, „HotSpot“ ir JDK bibliotekoms.
  • Platformos API naujovinimas palaikant „Unicode“ versiją 10.0, taip atnaujinant „Java“. Tikimasi palaikymo šiose klasėse:
    • Charakteris irStygos viduje konors lang pakuotė
    • „NumericShaper“ viduje konors awt.font pakuotė
    • Bidi, „BreakIterator“ir Normalizatorius viduje konors tekstas pakuotė
  • ChaCha20 ir Poly1305 kriptografinių algoritmų įgyvendinimas. „ChaCha2020“ yra palyginti naujas srauto šifras, kuris gali pakeisti senesnį, nesaugų R4 srauto šifrą. „ChaCha20“ būtų suporuotas su „Poly1305“ autentifikavimo priemone. „ChaCha20“ ir „ChaCha20-Poly1305“ šifravimo diegimas būtų užtikrintas, o algoritmai, įdiegti „SunJCE“ („Java“ kriptografijos plėtinio) teikėjui, naudojant kripto.CipherSpi API.
  • „Java“ paleidimo priemonės patobulinimas norint paleisti programą, pateiktą kaip vieną „Java“ šaltinio kodo failą, todėl šios programos gali veikti tiesiai iš šaltinio. Vieno failo programos yra įprastos, kai rašomos mažos komunalinės paslaugos arba kūrėjams pradedant mokytis „Java“. Be to, vieno šaltinio failas gali būti sudarytas į kelis klasės failus, o tai prideda pakuotės pridėtines išlaidas. Šiomis aplinkybėmis programos sudarymas prieš ją paleidžiant yra tik nereikalingas žingsnis, pagrįstas tradicijomis.
  • Mažo pridėtinio krūvos profiliavimas, suteikiantis galimybę atrinkti „Java“ kaupo paskirstymus, prieinamus per JVM įrankio sąsają. Šių pastangų tikslas yra gauti informacijos apie šiuos paskirstymus tokiu būdu, kuris yra nebrangus, prie kurio galima prisijungti per programinę sąsają ir kuris gali atrinkti visus paskirstymus. Tikslai taip pat yra įgyvendinimo nepriklausomumas ir duomenų apie gyvas ir negyvas kaupas teikimas. Dėl netinkamo krūvos valdymo gali išsekti krūva ir šiukšlių surinkimas. Daugelyje įrankių, kurie tai sprendžia, trūksta skambučių vietos tam tikriems paskirstymams, informacijai, kuri gali būti svarbi derinant atminties problemas.
  • Vista panaikina Pack200 ir Unpack200 įrankius ir Pack200 API util.jar. „Pack200“ yra .jar failų glaudinimo schema, skirta sumažinti programų pakavimo, perdavimo ir pristatymo disko ir pralaidumo reikalavimus. Priežiūros išlaidos ir mažas naudojimas nepateisina jų išlaikymo, sako projekto vadovai.
  • „Z Garbage Collector“ (ZGC), eksperimentinis, mažo vėlavimo laiko šiukšlių surinkėjas, skirtas tvarkyti nuo gana mažų iki labai didelių, daugelio terabaitų dydžio kaupus. Naudojant ZGC, pauzės laikas neturėtų viršyti 10 ms ir neturėtų būti daugiau kaip 15 procentų sumažinta taikymo pralaidumas, palyginti su G1 kolektoriaus naudojimu. ZGC taip pat yra pagrindas būsimoms funkcijoms ir optimizavimui. „Linux / x64“ bus pirmoji platforma, gavusi ZGC palaikymą.

Kas pašalinta iš „Java JDK 11“

„Java EE EE“ ir „CORBA“ moduliai buvo nebenaudojami „Java SE 9“, siekiant juos pašalinti vėlesniame leidime - tai yra JDK 11.

„Java SE 6“, išleista 2006 m. Gruodžio mėn., Kūrėjų patogumui įtraukė visą žiniatinklio paslaugų paketą - įskaitant keturias „Java EE“ platformai skirtas technologijas: JAX-WS („Java“ API XML pagrįstoms žiniatinklio paslaugoms, JAXB („Java Architecture for „XML Binding“), JAF („JavaBeans Activation Framework“) ir „Java“ bendrosios anotacijos. Laikui bėgant, „Java EE“ versijos vystėsi, sukeldamos „Java SE“ sunkumų, pavyzdžiui, įtraukiant „Java SE“ nesusijusias technologijas ir sunkiau prižiūrint abi „Java“. „Oracle“ teigia, kad atskirų „Java EE“ technologijų versijų, kurias galima įsigyti iš trečiųjų šalių svetainių, nebereikia turėti „Java SE“ ar „JDK“.

Vis dėlto kai kurios programos nebus kompiliuojamos ir nevykdomos, jei JDK „Java EE“ API ir įrankiams pasikliauja tiesioginiu palaikymu. Dvejetainis ir šaltinio nesuderinamumas gali kilti perkėlus JDK 6, 7 ar 8 į vėlesnį leidimą. „Oracle“ teigia, kad šios rizikos paveikti kūrėjai vietoj to gali įdiegti alternatyvias „Java EE“ technologijų versijas.

CORBA datuojamas 1990-aisiais, o „Oracle“ teigia, kad šiandien nėra didelio susidomėjimo kuriant šiuolaikines „Java“ programas su CORBA. CORBA palaikymo išlaidos yra didesnės nei likusi jos nauda.

Tačiau pašalinus CORBA, gali kilti CORBA diegimas, kuris nebus vykdomas, jei juose bus tik CORBA API pogrupis ir tikimasi, kad JDK pateiks likusią dalį. Nėra trečiosios šalies CORBA versijos ir nėra aišku, ar trečioji šalis galėtų perimti CORBA API priežiūrą.

„JavaFX“ yra pašalinama, todėl ji nėra susieta su „Java JDK“ dukart per metus vykdomu atnaujinimų tvarkaraščiu.