Programavimas

JDK 10: Kas naujo „Java 10“

„JDK 10“, „Java Standard Edition 10“ diegimas, buvo išleistas 2018 m. Kovo 20 d. Pagrindiniai patobulinimai apima vietinius kintamųjų tipus, taip pat šiukšlių surinkimo ir kaupimo patobulinimus.

Planuojama, kad „JDK 10“ bus tik trumpalaikis leidimas, o viešieji „JDK 10“ atnaujinimai turėtų baigtis po šešių mėnesių. Būsimasis „JDK 11“, kuris turėtų pasirodyti rugsėjo mėnesį, bus ilgalaikio palaikymo (LTS) „Java“ versija. LTS leidimai turėtų būti pateikiami kas trejus metus.

„Oracle“ nustatė šešių mėnesių „Java“ leidimų leidimo kadenciją. Buvo planuojama šį atnaujinimą ir jo tęsėjus pavadinti pagal leidimo metus ir mėnesį, o pirmasis leidimas vadinsis „Java 18.3“. Bet šie planai buvo panaikinti, kai buvo pareikšti prieštaravimai.

Kur atsisiųsti „Java JDK 10“

JDK 10 galite atsisiųsti iš „Oracle“ svetainės.

Naujos ir patobulintos „JDK 10“ funkcijos

Pagrindinės JDK 10 savybės:

  • Vietinio kintamojo tipo išvada, norint patobulinti „Java“ kalbą ir išplėsti tipo išvadą apie vietinių kintamųjų deklaracijas su inicialais.
  • Lygiagretus pilnas G1 šiukšlių surinkėjo šiukšlių surinkimas, siekiant pagerinti blogiausio atvejo vėlavimą.
  • Programos dalijimasis duomenimis, siekiant optimizuoti paleidimo laiką ir pėdsakus. Esama „Class-Data Sharing“ funkcija yra išplėsta, todėl programų klases galima patalpinti į bendrą archyvą.
  • Eksperimentinį „just-in-time“ kompiliatorių „Graal“ galima naudoti „Linux / x64“ platformoje.
  • Dokerio sąmoningumas. Vykdydamas „Linux“ sistemas, „Java Virtual Machine“ (JVM) žinos, ar ji veikia „Docker“ talpykloje. Konkrečiam konteineriui skirtą informaciją - procesorių skaičių ir bendrą talpyklai skirtą atmintį - JVM išgaus, o ne teirausis operacinės sistemos. („Java“ procesui prieinamų procesorių skaičius apskaičiuojamas pagal nurodytus procesorių rinkinius, dalis arba kvotas.)
  • Trys naujos JVM parinktys, leidžiančios „Docker“ konteinerių vartotojams geriau kontroliuoti sistemos atmintį.
  • Klaidų taisymas, skirtas pataisyti prisegimo mechanizmą, kai bandoma iš pagrindinio kompiuterio proceso prijungti prie „Java“ proceso, esančio „Docker“ talpykloje.
  • Trumpesnis „jShell REPL“ įrankio paleidimo laikas, ypač kai naudojamas daugelio fragmentų paleidimo failas.
  • Naujos API, leidžiančios geriau kurti nemodifikuojamas kolekcijas. copyOf,Nustatyti.copyOfir Žemėlapis.copyOf metodai sukuria naujus rinkimo egzempliorius iš esamų egzempliorių. Nauji metodai toUnmodifiableList, toUnmodifiableSetir toUnmodifiableMap buvo pridėti prie Kolekcionieriai klasę „Stream“ pakete, leidžiant srauto elementus surinkti į nemodifikuojamą kolekciją.
  • Vietinio kintamojo tipo išvada, siekiant patobulinti kalbą ir išplėsti tipo išvadą vietiniams kintamiesiems. Tikslas yra sumažinti „ceremoniją“, susijusią su kodavimu, išlaikant įsipareigojimą dėl statinio tipo saugumo.
  • Švari šiukšlių surinkėjų sąsaja, skirta pagerinti skirtingų šiukšlių surinkėjų šaltinio kodo izoliaciją. Šių pastangų tikslai yra geresnis vidinio šiukšlių surinkimo kodo modulis „HotSpot“ virtualioje mašinoje ir palengvinamas naujo šiukšlių surinkėjo įtraukimas į „HotSpot“.
  • Lygiagretus visas šiukšlių surinkėjo G1 surinkimas. Siekiama pagerinti blogiausio atvejo vėlavimą įgyvendinant lygiagretumą.
  • „HotSpot“ leidimas paskirstyti objekto kaupą alternatyviame atminties įrenginyje, pvz., NVDIMM atminties modulyje, kurį nurodė vartotojas. Ši funkcija numato, kad būsimos sistemos gali turėti nevienalytes atminties architektūras.
  • Įgalinamas „Grall Java“ pagrindu sukurto „just-in-time“ kompiliatoriaus eksperimentinis naudojimas „Linux / x64“ platformoje.
  • JDK miško saugyklų sujungimas į vieną kapinyną, siekiant supaprastinti plėtrą. Iki šiol kodų bazė buvo suskirstyta į kelias saugyklas, o tai gali sukelti problemų tvarkant šaltinio kodus.
  • Taikymas klasės duomenų dalijimuisi, siekiant sumažinti pėdsaką dalijantis bendrais klasės metaduomenimis procesuose. Pagerinamas ir paleidimo laikas.
  • „Thread-local“ rankos paspaudimai, skirti atlikti atgalinį pokalbį, neatliekant visuotinio VM saugos taško. Atskiras gijas galima sustabdyti vietoj visų gijų arba be gijų.
  • Numatytojo pagrindinio sertifikato institucijos sertifikatų rinkinio teikimas JDK. Tikslas yra atvirojo kodo šakniniai sertifikatai „Oracle“ „Java SE Root CA“ programoje, kad „OpenJDK“ kūriniai būtų patrauklesni kūrėjams.

Ilgalaikis „Java“ planas

Štai ką „Oracle“ teigė svarstanti kitoje ir vėlesnėse „Java SE“ versijose:

  • Gintaro projektas, kuris buvo mažesnių, į produktyvumą orientuotų kalbos funkcijų, apimančių vietinio kintamojo tipo išvadas, inkubatorius, siekiant sumažinti ceremoniją, susijusią su „Java“ kodo rašymu; patobulinti enums, siekiant pagerinti enum konstrukcijos išraiškingumą leidžiant enums tipo kintamuosius ir atliekant griežtesnį enum konstantų tipo patikrinimą; ir lambda likučius, kad padidintų lambda ir metodo nuorodų tinkamumą.
  • Projektas „Panama“, skirtas JVM ir savojo kodo susiejimui. JVM turi savųjų funkcijų skambučius ir JVM vietinių duomenų prieigą.
  • „Valhalla“ - tai pažangių „Java VM“ ir kalbos funkcijų kandidatų inkubatoriaus projektas, įskaitant vertės tipus ir bendrąją specializaciją.
  • „Project Loom“, siekiant sumažinti sudėtingų programų rašymą. Plane reikalaujama pridėti alternatyvų vartotojo režimo gijų diegimą, atskirtus tęsinius ir kitas konstrukcijas, susijusias su skambučio kamino manipuliavimu. Pagrindinis šio pasiūlymo tikslas yra pasiūlyti alternatyvų gijų įgyvendinimą, valdomą „Java“ parašytų planuotojų. Paprastų „Java“ gijų „Java“ programavimo modelis būtų išsaugotas, kol pagerės našumas ir sumažės pėdsakas.

Pagal naują šešių mėnesių leidimų tvarkaraštį funkcijos, kurios praleidžia vieną leidimą, gali būti atidėtos net šešis mėnesius, kai pasirodys kitas leidimas. Be to, kas paskelbta „JDK 10“, „Oracle“ neįsipareigojo, kada kuri nors iš naujų siūlomų funkcijų bus iš tikrųjų prieinama „Java“.