PĂ€rast kuut kuud arendust esitles Oracle platvormi (Java Platform, Standard Edition 15), mille etalonrealiseerimiseks kasutatakse avatud projekti OpenJDK. Java SE 15 sĂ€ilitab tagurpidi ĂŒhilduvuse varasemate Java versioonidega, kĂ”ik varasemad Java projektid töötavad ilma muudatusteta koos uue versiooniga. Valmis installimiseks olevad Java SE 15 paketid (JDK, JRE ja Server JRE) Linuxi (x86_64), Windowsi ja macOS-i jaoks. Avatud projekt OpenJDK raames loodud etalonrealiseerimine on tĂ€ielikult avatud GPLv2 litsentsiga, millel on GNU ClassPath'i erandid, mis lubavad dĂŒnaamilist sidumist kommertstooteid.
Java SE 15 kuulub tavaliste toega vĂ€ljaannete kategooriasse, mille vĂ€rskendusi antakse vĂ€lja seni, kuni ilmub jĂ€rgmine versioon. Pikaajalise toe (LTS) jaoks on soovitatav kasutada Java SE 11, mille vĂ€rskendusi antakse vĂ€lja kuni 2026. aastani. Eelmise LTS-suuna Java 8 toetamine kestab kuni 2020. aasta detsembri lĂ”puni. JĂ€rgmine LTS vĂ€ljaanne on planeeritud 2021. aasta septembriks. Tuletame meelde, et alates Java 10 vĂ€ljaandest on projekt lĂ€inud ĂŒle uuele arendusprotsessile, mis sisaldab lĂŒhemaid uute vĂ€ljaannete tsĂŒkleid. Uus funktsionaalsus areneb nĂŒĂŒd ĂŒhes pidevalt vĂ€rskendatavas master-haru, kuhu lisatakse valmis muudatused ja kuuest kuust lĂ”igatakse harud uute vĂ€ljaannete stabiliseerimiseks.
Kuna :
- EdDSA digitaalallkirja loomise algoritmi tugi (Edwards-Curve Digital Signature Algorithm ). EdDSA pakutud rakendus ei sĂ”ltu riistvaralisest platvormist, on kaitstud kĂ”rvalkanalitest pĂ€rit rĂŒnnakute eest (tagatakse kĂ”ikide arvutuste konstantne aeg) ja ĂŒletab jĂ”udluses olemasolevat ECDSA rakendust, mis on kirjutatud C keeles, samas kaitsetaset hoides. NĂ€iteks EdDSA kasutades 126-bitist elliptilise kĂ”veraga vĂ”tit nĂ€itab sama jĂ”udluse taset nagu ECDSA elliptilise kĂ”veraga secp256r1 ja 128-bitise vĂ”ti.
- eksperimentaalne tugi suletud (âsealedâ) klassidele ja liidestele, mida ei saa kasutada teiste klasside ja liideste poolt pĂ€rimise, laiendamise vĂ”i rakenduse ĂŒlekirjutamise jaoks. Suletud klassid pakuvad ka deklareerimise kaudu selgemat viisi superklasside kasutamise piiramiseks, vĂ”rreldes ligipÀÀsude modifikaatoritega, mis pĂ”hinevad lubatud alamklasside nimede selgel loetelul, mida saab laiendada.
package com.example.geometry;
public sealed class Shape
permits com.example.polar.Circle,
com.example.quad.Rectangle,
com.example.quad.simple.Square {âŠ} - tugevdatud klassid, mida ei saa otse kasutada teiste klasside poolt. Peamine eesmĂ€rk tugevdatud klasside puhul on kasutada neid raamistikus, mis genereerib klasse dĂŒnaamiliselt töö ajal ja kasutab neid kaudselt, lĂ€bi . Sellised klassid omavad tavaliselt piiratud elutsĂŒklit, seega pole nende hoidmine staatiliselt genereeritud klasside poolt ligipÀÀsetavana mĂ”istlik ega too muud kui suurenenud mĂ€lutarbimist. Tugevdatud klassid vĂ”imaldavad vĂ€ltida mittestandardsest API-st sun.misc.Unsafe::defineAnonymousClass, mis on kavandatud tulevikus eemaldada.
- Stabiliseeriti ja tunnustati laialdaseks kasutamiseks valmis prĂŒgikorja ZGC (Z Garbage Collector). ZGC töötab passiivses reĆŸiimis, et minimeerida prĂŒgikorjaga seotud viivitusi (ZGC kasutamisel ei ĂŒleta peatamise aeg 10 ms) ja suudab töötada nii vĂ€ikeste kui ka tohutute mĂ€gedega, mille suurus on paarisaja megabaiti kuni paljude terabaitideni.
- Stabiliseeriti ja tunnustati laialdaseks kasutamiseks valmis
prĂŒgikorjaja , mis töötab minimaalsete peatustega (Low-Pause-Time Garbage Collector). Shenandoah on vĂ€lja töötatud ettevĂ”tte Red Hat poolt ja on tuntud oma algoritmi poolest, mis vĂ€hendab prĂŒgikorja peatamisaegu, tehes koristustöid paralleelselt Java rakenduste kĂ€ivitamisega. PrĂŒgikorja pĂ”hjustatud viivituste suurus on ettearvatav ja ei sĂ”ltu mĂ€e suurusest, st 200 MB ja 200 GB mĂ€gede puhul on viivitused identsed ( 50 ms ja tavaliselt jÀÀvad 10 ms sisse); - Stabiliseeritud ja keelesse on sisse viidud tugi â uue stringi literate vorme, mis vĂ”imaldavad lisada lĂ€htekoodile mitmerealisi tekstandmeid ilma sĂŒmbolite escape'ita ja sĂ€ilitades teksti algse vormingu plokis. Ploki piirimiseks kasutatakse kolme jutumĂ€rki.
NĂ€iteks, koodi asemel
String html = "" +
"\n\t" + "" +
"\n\t\t" + "\"Java 15 on kohal!\"" +
"\n\t" + "" +
"\n" + "";saab mÀÀrata:
String html = """
<HTML>
<BODY>"Java 15\
on kohal!"
</BODY>
"""; - API Legacy DatagramSocket. Vanad teostused java.net.DatagramSocket ja java.net.MulticastSocket on asendatud tĂ€napĂ€eva teostusega, mis on kergemini silutav ja hooldatav ning ĂŒhilduv virtuaalsete voogudega, mis on arenduses projektis . KĂ”ik muu, mis vĂ”ib pĂ”hjustada ĂŒhilduvuse katkemist olemasolevaga, ei ole vana teostust eemaldatud ning see saab aktiveerida valiku jdk.net.usePlainDatagramSocketImpl abil.
- Pakutud on teine eksperimentaalne teostus instanceof operatsioonis, mis vÔimaldab kohe mÀÀrata kohalikku muutuja kontrollitud vÀÀrtusele viitamiseks. NÀiteks saab kohe kirjutada "if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" ilma "String s = (String) obj" selges mÀÀratlemiseta.
Oli:
if (obj instanceof Group) {
Group group = (Group) obj;
var entries = group.getEntries();
}NĂŒĂŒd saab ilma "Group group = (Group) obj" mÀÀratlemiseta hakkama:
if (obj instanceof Group group) {
var entries = group.getEntries();
} - teine eksperimentaalne teostus vĂ”tmesĂ”nast "" , mis pakub kompaktset vormi klasside mÀÀramiseks, vĂ”imaldades vĂ€ltida madala taseme meetodite nagu equals(), hashCode() ja toString() selget mÀÀratlemist, kui andmed salvestatakse ainult vĂ€ljadele, mille kĂ€itumine ei muutu. Kui klassis kasutatakse tĂŒĂŒplahendusi meetodite equals(), hashCode() ja toString() jaoks, saab neist ilma selge mÀÀratlemiseta hakkama:
public record BankTransaction(LocalDate date,
double amount,
String description) {}See mÀÀratlemine toob automaatselt kaasa meetodite equals(), hashCode() ja toString() teostuste lisamise koos konstruktoriga ja meetoditega, mis kontrollivad andmete muutmist (getter).
- teine eelnev versioon API Foreign-Memory Access, mis vÔimaldab Java rakendustel ohutult ja tÔhusalt pÀÀseda mÀlupiirkondadele vÀljaspool Java kuhi, manipuleerides uute abstraktsioonidega MemorySegment, MemoryAddress ja MemoryLayout.
- ja on kuulutatud vananenud tehnikaks Biased Locking, mida kasutati HotSpot JVM-is lukustamise ĂŒleolekute vĂ€hendamiseks. See tehnika on tĂ€napĂ€eva CPU-de pakutavate aatominstruktsioonide tĂ”ttu kaotanud oma tĂ€htsuse ja on oma keerukuse tĂ”ttu liiga töömahukas hooldamiseks.
- vananenud mehhanism , mis eemaldatakse ĂŒhes jĂ€rgmistest vĂ€ljaannetest. TĂ€heldatakse, et RMI Activation on vananenud, kuulutati valikuks juba Java 8-s ja praktiliselt ei kasutata tĂ€napĂ€evases praktikas.
- JavaScript mootori , mis kuulutati vananenuks Java SE 11-s.
- sadamad Solaris operatsioonisĂŒsteemi ja SPARC protsessorite jaoks (Solaris/SPARC, Solaris/x64 ja Linux/SPARC). Nende sadamate eemaldamine vĂ”imaldab kogukonnal kiirendada uute vĂ”imaluste arendamist OpenJDK, kulutamata aega Solaris ja SPARC-spetsiifiliste omaduste hooldamiseks.
Allikas: opennet.ru
