Programmēšana

Java JDK 11: visas jaunās funkcijas tagad ir pieejamas

Java izstrādes komplekts (JDK) 11 tagad ir vispārpieejams un gatavs lietošanai, nodrošinot produktivitātes uzlabojumus un HTTP klienta API, kas ievieš HTTP / 2.

Java Standard Edition (SE) 11. versijā ir 16 galvenās iezīmju izmaiņas. Java 11 arī zaudē dažas iespējas, noņemot CORBA un Java EE (nesen pārdēvēto par Jakarta EE) moduļus, kā arī noņemot JavaFX, kas tagad ir pieejama kā atsevišķa tehnoloģija.

Programmā Java 11 Oracle ir izveidojis galvenās līnijas krātuvi jdk / jdk uz jdk / jdk11 stabilizācijas krātuvi. Izmaiņas, kas pārvietotas uz jdk / jdk vai jdk / client, tagad ir atzīmētas JDK 12. Stabilizācijas krātuve var pieņemt atsevišķus kļūdu labojumus un, ja tie ir apstiprināti, novēlotus uzlabojumus atbilstoši JDK izlaišanas procesam.

Oracle standarta Java ieviešanas jaunākā versija ir Ilgtermiņa atbalsta (LTS) izlaidums, kuram Oracle būs komerciāls atbalsts vismaz astoņus gadus. Kļūdu labojumi un drošības atjauninājumi tiks piedāvāti līdz 2026. gadam. Jauni LTS izlaidumi ir jāiesniedz ik pēc trim gadiem, un nākamais LTS laidiens ir paredzēts JDK 17, kas paredzēts 2021. gadā. Pagaidu paziņojumi notiks reizi pusgadā.

Kur lejupielādēt JDK 11

JDK 11 varat lejupielādēt no Oracle Technology Network.

Jaunas funkcijas Java 11 JDK

JDK 11 ir 16 jaunas funkcijas:

  • Uzlabot Aarch64 iekšējo būtību, ieviešot jaunuslang.Math sin, cos un log funkcijas Aarch64 procesoros. Šis priekšlikums uzsver īpašus procesora arhitektūras specifiskus kodu modeļus, kas uzlabo lietojumprogrammu un etalonu veiktspēju.
  • Uz ligzdām balstīta piekļuves kontrole ievieš ligzdas - piekļuves kontroles kontekstu, kas sakrīt ar ligzdoto tipu jēdzienu Java valodā. Ligzdas ļauj klasēm, kas loģiski ietilpst vienā un tajā pašā koda entītijā, bet ir apkopotas atsevišķiem klases failiem, lai piekļūtu viens otra privātajiem dalībniekiem, bez sastādītājiem, lai ievietotu pieejamības paplašināšanas tilta metodes.
  • Transporta slāņa drošība (TLS) 1.3, kurā šī TLS protokola pārskatīšana tiks iekļauta JDK 11, piedāvājot ievērojamas drošības un veiktspējas priekšrocības. Tomēr nav mērķa atbalstīt visas TLS 1.3 funkcijas. Lai mazinātu nesaderības risku, TLS 1.3 pēc noklusējuma ieviesīs atpakaļ savietojamības režīmu. Lietojumprogrammas var izslēgt vai ieslēgt šo režīmu pēc vēlēšanās.
  • Nashorn JavaScript dzinēja, kā arī JJS rīka nolietojums ar nolūku tos nākotnē noņemt. Oracle uzskata, ka Nashorn ir grūti uzturēt, ņemot vērā ECMAScript valodas konstrukciju un API ātro pielāgošanu un modificēšanu.
  • HTTP klients (standarta), kas standartizē inkubēto HTTP API klientu, kas ieviests JDK 9 un atjaunināts JDK 10. API piedāvā bloķēšanas pieprasījumu un atbilžu semantiku, izmantojot CompleteableFutures, kuru var saistīt ar atkarīgu darbību iedarbināšanu. Īstenošana, kas tagad ir asinhrona, pēc inkubācijas JDK 9. un 10. versijā ir gandrīz pilnībā pārrakstīta. RX Flow koncepcija ir iestrādāta ieviešanā, novēršot daudzus pielāgotus jēdzienus, kas nepieciešami HTTP / 2 atbalstam. Datu plūsmu tagad var vieglāk izsekot, sākot no lietotāja līmeņa pieprasījumu izdevējiem un atbilžu izdevējiem līdz pamatā esošajai kontaktligzdai. Tas samazina sarežģītību un palielina atkārtotas izmantošanas iespēju starp HTTP / 1 un HTTP / 2.
  • Epsilon atkritumu savācējs, kas tiek iekasēts kā “bez opcijas” savācējs, rīkosies ar atmiņas piešķiršanu, neieviešot nekādus faktiskus atmiņas atjaunošanas mehānismus. Epsilon lietojuma gadījumi ietver veiktspējas, atmiņas spiediena un virtuālās mašīnas saskarnes testēšanu. To varētu izmantot arī īslaicīgiem darbiem.
  • Lambda parametru lokālā mainīgā sintaksei jāsaskaņo oficiālā parametra deklarācijas sintakse netieši ierakstītā izteiksmē ar vietējā mainīgā deklarācijas sintaksi. Tas ļautu var jāizmanto, deklarējot netieši ievadīto lambda izteicienu formālos parametrus.
  • Java klases faila formāts tiks paplašināts, lai atbalstītu jaunu nemainīgas kopas formu, CONSTANT_Dynamic. Mērķis ir samazināt izmaksas un traucējumus, lai izveidotu jaunas materializējamu klases failu ierobežojumu formas.
  • Galvenajai vienošanās ar Curve25519 un Curve448 kriptogrāfiju vajadzētu būt efektīvākai un drošākai par esošo elipses līknes Diffie-Hellman shēmu. Divas eliptiskās līknes - Curve25510 un Curve448 - nodrošina pastāvīga laika ieviešanu un bez izņēmuma skalāru reizināšanu, kas ir izturīgāka pret dažādiem sānu kanālu uzbrukumiem, tostarp laika un kešatmiņas uzbrukumiem, norāda IETF. Priekšlikuma mērķi ietver API un galvenās vienošanās shēmas ieviešanu, kā arī no platformas neatkarīgas, visas Java ieviešanas izstrādi. Tomēr pastāv risks, ka priekšlikumā iekļautās moduļu aritmētiskās ieviešanas sarežģītība un smalkums.
  • Flight Recorder nodrošinātu zemu pieskaitāmu datu vākšanas sistēmu gan Java lietojumprogrammu, gan HotSpot JVM problēmu novēršanai. Lidojuma reģistrators ir bijusi Oracle komerciālā JDK iezīme, taču tā avota kods būtu jāpārvieto uz atvērtu krātuvi, lai šī funkcija būtu vispārēji pieejama. Iclouded būtu API, kas ražotu un patērētu datus kā notikumus, nodrošinot bufera mehānismu un bināro datu formātu un ļaujot konfigurēt un filtrēt notikumus. Priekšlikums arī aicina nodrošināt pasākumus OS, HotSpot un JDK bibliotēkām.
  • Platformas API jaunināšana, lai atbalstītu Unicode versiju 10.0, tādējādi atjauninot Java. Atbalsts tiek gaidīts šādās nodarbībās:
    • Raksturs unStīga iekš lang iepakojums
    • NumericShaper iekš awt.font iepakojums
    • Bidi, BreakIterator, un Normalizētājs iekš tekstu iepakojums
  • ChaCha20 un Poly1305 kriptogrāfisko algoritmu ieviešana. ChaCha2020 ir salīdzinoši jauns straumes šifrs, kas var aizstāt vecāko, nedrošo R4 straumes šifru. ChaCha20 tiks savienots pārī ar Poly1305 autentifikatoru. Tiks nodrošināta ChaCha20 un ChaCha20-Poly1305 šifra ieviešana, algoritmus ieviešot SunJCE (Java Cryptography Extension) nodrošinātājā, izmantojot kriptogrāfija.CipherSpi API.
  • Java palaidēja uzlabošana, lai palaistu programmu, kas tiek piegādāta kā viens Java avota koda fails, lai šīs programmas varētu darboties tieši no avota. Viena faila programmas ir izplatītas, rakstot mazus utilītus vai izstrādātājiem Java sākumposmā. Arī viena avota fails var tikt apkopots vairākiem klases failiem, kas palielina iepakojuma izmaksas. Šādā kontekstā programmas sastādīšana pirms tās palaišanas ir tikai nevajadzīgs, uz tradīcijām balstīts solis.
  • Profilēšana ar zemu pieskaitāmo kaudzi, nodrošinot iespēju izlasīt Java kaudzes piešķīrumus, kas pieejami, izmantojot JVM rīku saskarni. Šo centienu mērķis ir iegūt informāciju par šiem piešķīrumiem tādā veidā, kas ir par zemu pieskaitāmo, tam var piekļūt, izmantojot programmatisko saskarni, un var izlasīt visus piešķīrumus. Mērķi ir arī ieviešanas neatkarība un datu sniegšana par dzīvām un mirušām kaudzēm. Slikta kaudzes apsaimniekošana var izraisīt kaudzes izsmelšanu un atkritumu savākšanu. Lielākajai daļai rīku, kas to risina, trūkst zvana vietnes noteiktiem piešķīrumiem - informācijai, kas var būt būtiska, lai atkļūdotu atmiņas problēmas.
  • Windows XP rīku un Pack200 API nolietošana util.jar. Pack200 ir .jar failu saspiešanas shēma, kas paredzēta, lai samazinātu disku un joslas platuma prasības lietojumprogrammu iesaiņošanai, pārsūtīšanai un piegādei. Uzturēšanas izmaksas un zems lietojums neattaisno to saglabāšanu, saka projekta vadītāji.
  • Z Garbage Collector (ZGC), eksperimentāls atkritumu savācējs ar zemu latentumu, lai apstrādātu kaudzes, sākot no salīdzinoši mazām līdz ļoti lielām kaudzēm, kuru lielums ir daudz terabaitu. Izmantojot ZGC, pauzes laikam nevajadzētu pārsniegt 10 ms, un lietojuma caurlaides samazinājumam jābūt ne vairāk kā 15 procentiem, salīdzinot ar G1 kolektora izmantošanu. ZGC ir arī pamats nākotnes funkcijām un optimizācijai. Linux / x64 būs pirmā platforma, kas saņems ZGC atbalstu.

Kas ir noņemts no Java JDK 11

Java EE EE un CORBA moduļi tika novecojuši Java SE 9 nolūkā tos noņemt vēlākā laidienā, kas ir JDK 11.

Java SE 6, kas tika izlaists 2006. gada decembrī, izstrādātāju ērtībai ietvēra pilnu tīmekļa pakalpojumu klāstu, tostarp četras Java EE platformai izveidotas tehnoloģijas: JAX-WS (Java API uz XML balstītiem Web Services, JAXB (Java Architecture for XML Binding), JAF (JavaBeans Activation Framework) un Java parastās anotācijas. Laika gaitā Java EE versijas attīstījās, radot Java SE grūtības, piemēram, iekļaujot Java SE nesaistītas tehnoloģijas un grūtāk uzturot abas Java Ar atsevišķām Java EE tehnoloģiju versijām, kas pieejamas no trešo pušu vietnēm, Oracle saka, ka vairs nav nepieciešams tās ievietot Java SE vai JDK.

Tomēr dažas lietojumprogrammas neapkopos un nedarbosies, ja tās paļaujas uz JDK Java EE API un rīkiem paredzēto atbalstu. Binārā un avota nesaderība varētu rasties, migrējot JDK 6, 7 vai 8 uz vēlāku laidienu. Oracle saka, ka izstrādātāji, kurus ietekmē šie riski, tā vietā var izvietot alternatīvas Java EE tehnoloģiju versijas.

CORBA datēta ar pagājušā gadsimta deviņdesmitajiem gadiem, un Oracle saka, ka šodien nav būtiskas intereses attīstīt modernas Java lietojumprogrammas ar CORBA. CORBA atbalsta uzturēšanas izmaksas pārsniedz tā atlikušās priekšrocības.

Bet CORBA noņemšana rada risku, ka CORBA ieviešana nedarbosies, ja tajās būs tikai CORBA API apakškopa un tiek sagaidīts, ka JDK nodrošinās pārējo. Nav trešās puses CORBA versijas, un nav skaidrs, vai trešā puse varētu pārņemt CORBA API uzturēšanu.

JavaFX tiek noņemts, tāpēc tas nav saistīts ar Java JDK divreiz gadā veikto atjauninājumu grafiku.