PĂ€rast kuut kuud arendust on ettevĂ”te Oracle platvormi (Java Platform, Standard Edition 15), mille referentsiks on avatud projekt OpenJDK. Java SE 15 sĂ€ilitab tagasipöörduvuse varasemate Java platvormi versioonidega, mistĂ”ttu kĂ”ik varem kirjutatud Java projektid töötavad uue versiooniga ilma muutmisteta. Paigalduseks valmis Java SE 15 (JDK, JRE ja Server JRE) Linuxile (x86_64), Windowsile ja macOS-ile. OpenJDK projekti raames vĂ€lja töötatud referentsrealiseerimine on tĂ€iesti avatud GPLv2 litsentsi all koos GNU ClassPath eranditega, mis lubavad dĂŒnaamilist sidumist kommertstooteid.
Java SE 15 kuulub tavapĂ€rase toetuse kategooriasse, mille uuendusi hakatakse vĂ€lja andma kuni jĂ€rgmise versioonini. Pikaajalise toetuse (LTS) haruna tuleks kasutada Java SE 11, mille uuendusi hakatakse vĂ€lja andma kuni 2026. aastani. Eelmine LTS-haru Java 8 on toetatud kuni 2020. aasta detsembrini. JĂ€rgmine LTS-vĂ€ljaanne on plaanis 2021. aasta septembriks. Tuletame meelde, et alates Java 10 vĂ€ljaandest on projekt lĂ€inud ĂŒle uuele arendusprotsessile, mis tĂ€hendab lĂŒhemaid uute vĂ€ljaannete tsĂŒkleid. Uus funktsionaalsus areneb nĂŒĂŒd ĂŒksnes pidevalt vĂ€rskendatavas master-harus, kuhu integreeritakse valmis muudatused ning millest hakatakse iga kuue kuu tagant haru stabiliseerimiseks vĂ€lja lĂ”ikama.
Uusimad :
- EdDSA (Edwards-KĂ”ver digitaalallkirja algoritmi) loomise algoritmi tugi ). EdDSA rakendus ei sĂ”ltu riistvarast, on kaitstud kĂ”rvalkanali rĂŒnnakute eest (tagatud on kĂ”ikide arvutuste konstantne aeg) ja ĂŒletab jĂ”udluses olemasolevat ECDSA rakendust, mis on kirjutatud C keeles, samas kaitse tasemes. NĂ€iteks EdDSA, kasutades 126-bitist elliptilise kĂ”vera vĂ”tme, nĂ€itab ECDSA-ga, mis kasutab elliptilist kĂ”verat secp256r1 ja 128-bitist vĂ”tme, sarnast jĂ”udlust.
- eksperimentaalne tugi pitseeritud ('sealed') klassidele ja liideseidele, mis ei saa teiste klasside ja liideste poolt pĂ€rimisel, laiendamisel vĂ”i teostuse ĂŒletamisel kasutada. Pitseeritud klassid pakuvad ka selgemat viisi superklassi kasutamise piiramise jĂ€rgi, vĂ”rreldes juurdepÀÀsukinnitustega, mis pĂ”hinevad lubatud alamklasside selgel loetlemisel.
package com.example.geometry;
public sealed class Shape
permits com.example.polar.Circle,
com.example.quad.Rectangle,
com.example.quad.simple.Square {âŠ} - toetab peidetud klasse, mida ei saa otse teiste klasside poolt kasutatava bite-koodina kasutada. Peidetud klasside peamine eesmĂ€rk on kasutada neid raamistikudes, mis genereerivad klassid dĂŒnaamiliselt tĂ€itmise ajal ja kasutavad neid kaudselt, lĂ€bi . Sellised klassid omavad tavaliselt piiratud elutsĂŒklit, seega nende hooldamine, et juurdepÀÀs saada staatiliselt genereeritud klassidest, ei ole tĂ”hus ja toob kaasa vaid mĂ€lutarbimise suurenemise. Peidetud klassid vĂ”imaldavad ka vĂ€ltida mittestandardse API sun.misc.Unsafe::defineAnonymousClass kasutamist, mille eemaldamine on tulevikus plaanis.
- Stabiliseeritud ja tunnustatud laialdaseks kasutamiseks olev ZGC (Z Garbage Collector) prĂŒgikoguja. ZGC töötab passiivses reĆŸiimis, et minimeerida prĂŒgikoguja tĂ”ttu tekkivaid viivitusi (ZGC kasutamisel ei ĂŒleta peatumise aeg 10 ms) ja suudab töötada nii vĂ€ikeste kui ka tohutute virnadega, mille suurus ulatub paarist sadast megabaidist kuni mitme terabaidini.
- Stabiliseeritud ja tunnustatud laialdaseks kasutamiseks
prĂŒgikoguja , töötav minimaalsete peatumistega (Low-Pause-Time Garbage Collector). Shenandoah on vĂ€lja töötanud Red Hat ja see paistab silma algoritmi kasutamisega, mis vĂ€hendab peatumisaega prĂŒgikogumise ajal, viies puhastustöid paralleelselt Java rakenduste tĂ€itmisega. PrĂŒgikogujaga kaasnevad peatamise ajad on ennustatavad ja ei sĂ”ltu kuhja suurusest, st 200 MB ja 200 GB kuhjade puhul on peatumisajad identsed ( 50 ms ja tavaliselt jÀÀvad 10 ms piiresse); - Vabiliidud ja keeles on toetust stabiliseeritud â uue vormi stringilitterid, mis vĂ”imaldavad sisaldada lĂ€htekoodis mitme rea tekstilisi andmeid ilma sĂŒmbolite eraldamiseta ja sĂ€ilitades tekstiploki algse vormingu. Ploki ĂŒmber on kĂ”rgsed kolme topelt jutumĂ€rke.
NĂ€iteks, koodi asemel
String html = «<HTML>» +
«\n\t» + «<BODY>» +
«\n\t\t» + «<H1>\»Java 15 on kohal!\»</H1>» +
«\n\t» + «</BODY>» +
«\n» + «</HTML>»;vÔib kirjutada:
String html = «»»
<HTML>
<BODY>
<H1>»Java 15\
on kohal!»</H1>
</BODY>
</HTML>»»»; - API Legacy DatagramSocket. Vanade java.net.DatagramSocket ja java.net.MulticastSocket rakendused on asendatud kaasaegse rakendusega, mis on lihtsam silumisel ja hooldamisel ning ĂŒhilduv virtuaalsete voogudega, mida arendatakse projekti kĂ€igus. . Juhuks, kui olemasoleva koodiga ĂŒhilduvus katkeb, ei eemaldata vana rakendust ja seda saab aktiveerida jdk.net.usePlainDatagramSocketImpl valiku abil.
- Pakutakse teist katsetusversiooni instanceof operaatoris, mis vÔimaldab kohe mÀÀrata lokaalse muutuja kontrollitud vÀÀrtusele viitamiseks. NÀiteks saab kirjutada "if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" ilma, et peaks selgelt mÀÀratlema "String s = (String) obj".
Oli:
if (obj instanceof Group) {
Group group = (Group) obj;
var entries = group.getEntries();
}NĂŒĂŒd saab loobuda mÀÀratlemast "Group group = (Group) obj":
if (obj instanceof Group group) {
var entries = group.getEntries();
} - teise katsetusversiooni vĂ”tmesĂ”na "«, pakkudes kompaktset vormi klasside mÀÀratlemiseks, mis vĂ”imaldab vĂ€ltida erinevate madalama taseme meetodite, nagu equals(), hashCode() ja toString(), selget mÀÀratlemist, juhtudel, kui andmed salvestatakse ainult vĂ€ljadessse, mille kasutus ei muutu. Kui klassis kasutatakse tĂŒĂŒpide pĂ”hjalike meetodite equals(), hashCode() ja toString() realiseerimisi, siis saab neist ilma selgelt mÀÀratlemata hakkama:
public record BankTransaction(LocalDate date,
double amount,
String description) {}See deklareerimine toob automaatselt kaasa meetodite equals(), hashCode() ja toString() rakenduste lisamise koos konstruktorite ja andmete muutmise (getterite) juhtimise meetoditega.
- teine kavandatud Foreign-Memory Access API, mis vÔimaldab Java rakendustel ohutult ja tÔhusalt pÀÀseda juurde mÀlu aladele vÀljaspool Java hunnikut, manipuleerides uute abstraktsioonidega MemorySegment, MemoryAddress ja MemoryLayout.
- ja kuulutati vananenuks Biased Locking optimeerimistehnika, mis kohaldati HotSpot JVM-is, et vĂ€hendada lukustustest tingitud ĂŒlepeakaalu. See tehnika on kaotanud oma tĂ€htsuse sĂŒsteemidel, mis kasutavad kaasaegsete CPU-de pakutavaid aatomilisi kĂ€ske, ning on liiga töömahukas oma keerukuse tĂ”ttu.
- vananenud mehhanism , mis tĂ”mmatakse tagasi ĂŒhes jĂ€rgnevas vĂ€ljaandes. On mĂ€rgitud, et RMI Activation on aegunud, muudetud valikuks juba Java 8-s ja enamasti ei kasutata seda kaasaegses praktikas.
- JavaScripti mootor , mis kuulutati Java SE 11-s aegunuks.
- portid Solaris OS ja SPARC protsessorite jaoks (Solaris/SPARC, Solaris/x64 ja Linux/SPARC). Nende portide eemaldamine vÔimaldab kogukonnal kiirendada uute OpenJDK vÔimaluste arendamist, kulutamata aega Solaris ja SPARC spetsiifiliste omaduste sÀilitamiseks.
Allikas: opennet.ru
