Programavimas

JDK 14: Naujos „Java 14“ funkcijos

„Java Development Kit“ (JDK) 14 pasiekė GA, pristatydamas bendrojo prieinamumo leidimą, skirtą gamybos diegimui. Atnaujinimas į standartinę „Java“ apima naujas galimybes, tokias kaip „JDK Flight Recorder“ įvykių srautas, modelių derinimas ir jungiklių išraiškos.

JDK 14 yra „Java“ funkcinis leidimas, o ne ilgalaikio palaikymo (LTS) leidimas po šešių mėnesių „Java“ nustatymo. „JDK 14“ saugos naujinius gaus balandžio ir liepos mėnesiais, kol jį pakeis „JDK 15“, taip pat ne LTS leidimas, kuris bus pateiktas rugsėjį. Dabartinis LTS leidimas yra JDK 11.

Naujos „JDK 14“ funkcijos ir patobulinimai apima:

  • „JFR Event Streaming“ suteikia API nenutrūkstamam JFR duomenų naudojimui tiek iš proceso, tiek už proceso ribų. JFR yra įrankis, skirtas rinkti profiliavimo ir diagnostinius duomenis apie „Java“ programą ir JVM, kai jie veikia. Renginio srautiniame siūlyme įrašomas tas pats įvykių rinkinys, kaip ir ne srautu, jei įmanoma, pridėtinės išlaidos yra mažesnės nei vienas procentas. Įvykių srautas turi egzistuoti kartu su nesrautiniais įrašais, tiek diskais, tiek atmintimi. Motyvuoti šį pasiūlymą yra situacija, kai „HotSpot“ virtualioji mašina išleidžia daugiau nei 500 duomenų taškų naudodama JFR, dauguma jų pasiekiami tik analizuojant žurnalo failus. Šiuo metu vartotojas turi pradėti įrašymą, jį sustabdyti, išmesti turinį į diską ir tada išanalizuoti įrašymo failą. Tai gerai tinka profiliuojant programas, bet ne stebėjimo tikslais. Naudojimo stebėjimo pavyzdys yra prietaisų skydelis, kuriame rodomi dinamiški duomenų atnaujinimai. Yra pridėtinės išlaidos kuriant įrašą, pavyzdžiui, duomenų kopijavimas iš disko saugyklos į atskirą įrašymo failą. Jei būtų būdas nuskaityti iš disko saugyklos įrašomus duomenis nesukuriant naujo įrašymo failo, būtų galima išvengti didelės pridėtinės sumos.
  • Numatytas patobulinimas iki„NullPointerExceptions“ yra susijęs su JVM sukurtų išimčių naudojimo gerinimu, tiksliai apibūdinant, kuris kintamasis buvo nulinis. Pasiūlymo autoriai siekia suteikti naudingos informacijos kūrėjams ir pagalbiniam personalui apie ankstyvą programos nutraukimą ir pagerinti programos supratimą, aiškesnį dinaminės išimties susiejimą su statiniu programos kodu. Vienas tikslas yra sumažinti painiavą ir susirūpinimą, kurį kelia kūrėjai „NullPointerExceptions“.
  • Nepastovūs susieti baitų buferiai pridėtų naujų JDK failų susiejimo režimų, leidžiančių naudoti „FileChannel“ API kuriant „MappedByteBuffer“ egzemplioriai, kurie nurodo nepastovią atmintį (NVM). NVM suteikia programuotojams galimybę kurti ir atnaujinti programos būseną visais programos laikotarpiais, nepatiriant reikšmingų kopijavimo ar vertimo išlaidų, kurių paprastai reikia įvesties ir išvesties operacijoms. Tai ypač svarbu sandorių programoms. Taigi pagrindinis šio „JDK Enhancement“ pasiūlymo tikslas yra užtikrinti, kad klientai galėtų nuosekliai ir efektyviai pasiekti ir atnaujinti NVM iš „Java“ programos. Antrinis tikslas yra įgyvendinti šį įsipareigojimo elgesį naudojant klasėje apibrėžtą ribotą vidinį JDK API Nesaugu, todėl jį gali pakartotinai naudoti kitos nei „MappedByteBuffer“ kad gali tekti įsipareigoti NVM. Kitas tikslas yra leisti per NVM susietus buferius stebėti esamoms API stebėjimui ir valdymui. Tikslinės OS / CPU platformos apima „Linux / x64“ ir „Linux / AArch64“.
  • Perjungimo išraiškos supaprastina kodavimą pratęsiantperjungti kad jį būtų galima naudoti kaip teiginį arba išraišką. Tikimasi, kad jungiklio išraiškos bus nuolatinė JDK 14 funkcija po to, kai bus peržiūrėtos ir JDK 12, ir JDK 13. Perjungimo išraiškos taip pat paruošia šablonų derinimą perjungti. Šablonų suderinimas leidžia kūrėjams sąlygiškai išgauti komponentų komponentus glaustiau ir saugiau.
  • NUMA žinantis atminties paskirstymas G1 šiukšlių surinkėjui, skirtas pagerinti G1 našumą didelėse mašinose.
  • Pašalinti „Concurrent Mark Sweep“ (CMS) šiukšlių surinktuvą, kuris anksčiau buvo nebenaudojamas ir buvo pašalintas. Atsirado CMS įpėdinių, įskaitant ZGC ir Shenandoah.
  • ZGC perkėlimas į „MacOS“. Iki šiol jis buvo palaikomas tik „Linux“.
  • Pašalinti „pack200“ ir „unpackpack200“ įrankius bei „Pack200“ API java.util.jar pakuotė. Visa tai buvo nebenaudojama „Java SE 11“, siekiant ateityje jas pašalinti. „Pack200“ yra JAR failų glaudinimo schema.
  • Įrašai, kurie suteiktų kompaktišką sintaksę deklaruojant klases, kurios yra skaidrūs negiliai keičiamų duomenų turėtojai. Įrašai leidžia lengvai kurti klases, kurios iš esmės yra duomenų laikmenos, nereikalaujant parašyti daug katilinės. Pasiūlyme teigiama, kad turėtų būti lengva ir glausta paskelbti sekliai nekintamus, gerai elgiamus, nominalius duomenų suvestinius.
  • Pakavimo įrankis, inkubatoriaus kūrimo etape, skirtas savarankiškų „Java“ programų pakavimui. Įrankis būtų pagrįstas „JavaFX“ javapackager. Toks įrankis buvo įtrauktas į „Java“, tačiau buvo pašalintas iš JDK 11 kaip „JavaFX“ pašalinimo dalis.
  • Patobulinkite kalbą, suderindami šabloną egzempliorius operatorius. Tai būtų „JDK 14“ peržiūros funkcija. Šablonų suderinimas leidžia glaudžiau ir saugiau išreikšti bendrą programos logiką, daugiausia sąlyginį komponentų išskyrimą iš objektų. Kodas gali būti trumpas ir saugus tipui.
  • Antroji teksto blokų peržiūra, kelių eilučių eilutės literalas, kuris nereikalauja daugumos pabėgimo sekų ir automatiškai formatuoja eilutę numatomu būdu. Teksto blokai suteiktų kūrėjui galimybę valdyti formatą, kai to pageidaujama, supaprastintų „Java“ programų rašymą ir pagerintų eilučių įskaitomumą. Teksto blokai buvo peržiūrėti JDK 13; JDK 14 iteracija pridėtų pabėgimo sekų, kad būtų galima tvarkyti aiškias baltąsias erdves ir valdyti naują liniją.
  • Panaikinamas „Parallel Scavenge“ ir „Serial Old“ šiukšlių surinkimo algoritmų derinys. „Java“ prižiūrėtojai mano, kad šis derinys naudojamas labai nedaug, tačiau jį reikia daug prižiūrėti.
  • ZGC („Z Garbage Collector“) perkėlimas į „Windows“. Ši funkcija vėl buvo perkelta į oficialiai taikomą sąrašą, kai ji buvo grąžinta į siūlomą taikyti sąrašą.
  • Užsienio atminties prieigos API, įdiegus „Java“ programų API, kad būtų galima saugiai ir efektyviai pasiekti užsienio atmintį už „Java“ krūvos ribų. Ši API turėtų būti alternatyva pagrindiniams būdams, kuriais „Java“ programos pasiekia atmintį, įskaitant nio.ByteBuffer ir sun.misc.Nesaugu. Naujoji API turėtų galėti valdyti įvairių tipų atmintį, įskaitant savąją, nuolatinę atmintį ir valdomą kaupą. API neturėtų būti įmanoma pakenkti JVM saugumui. Atminties paskirstymas turėtų būti aiškus šaltinio kode. Tikimasi, kad API padės plėtoti savitarpio bendradarbiavimo palaikymą, kuris yra „Panama“ projekto tikslas.
  • Nebeveikia „Solaris“ / „Sparc“, „Solaris / x64“ ir „Linux / Sparc“ prievadai, ketindami juos pašalinti būsimame leidime. Šių uostų palaikymo atsisakymas leis „OpenJDK“ bendraautoriams paspartinti naujų funkcijų kūrimą. Nors „Solaris“ ir „Sparc“ buvo „Sun Microsystems“, pirminio „Java“ kūrėjo, pagrindinės technologijos, pastaraisiais metais technologijos erdvėje juos pakeitė „Linux“ ir „Intel“ procesoriai.

Kur atsisiųsti JDK 14

Galite atsisiųsti atvirojo kodo „JDK 14“ iš „jdk.java.net“, skirtos „Linux“, „Windows“ ir „MacOS“. „Oracle“ komercinius „Java SE 14“ atsisiuntimus galite atsisiųsti iš „Oracle.com“.