Pēc sešu mēnešu izstrādes uzņēmums Oracle platformu (Java Platform, Standard Edition 15), kuras atsauce ir atvērta projekta OpenJDK realizācija. Java SE 15 saglabā atpakaļsaderību ar iepriekšējiem Java platformas izlaidumiem, visi iepriekš rakstītie Java projekti darbosies bez izmaiņām, kad tie tiks palaisti jaunajā versijā. Installācijas gatavās Java SE 15 versijas (JDK, JRE un Server JRE) Linux (x86_64), Windows un macOS. Projekta OpenJDK ietvaros izstrādātā referenču realizācija ir pilnībā atvērta saskaņā ar GPLv2 licenci ar GNU ClassPath izņēmumiem, kas atļauj dinamisku saistīšanu ar komerciāliem produktiem.
Java SE 15 pieder pie izlaidumiem ar parasto atbalsta periodu, atjauninājumi tiks izlaisti līdz nākamajam relīzam. Ilgstoša atbalsta (LTS) versijai jāizmanto Java SE 11, atjauninājumi tiks izlaisti līdz 2026. gadam. Iepriekšējā LTS versija Java 8 tiks atbalstīta līdz 2020. gada decembrim. Nākamais LTS izlaidums ir plānots 2021. gada septembrī. Atgādinām, ka, sākot ar Java 10 izlaidumu, projekts pārgāja uz jaunu attīstības procesu, kas nozīmē īsāku jauno izlaidumu ciklu. Jauna funkcionalitāte tagad tiek attīstīta vienā pastāvīgi atjaunotā master filiālē, kurā ietver jau gatavas izmaiņas, no kuras reizi sešos mēnešos tiek izveidotas stabilizācijas filiāles.
No :
- atbalsts digitālo parakstu algorithma EdDSA (Edwards-Curve Digital Signature Algorithm ). Ieteiktā EdDSA realizācija nav atkarīga no aparatūras platformām, ir aizsargāta pret ārējiem uzbrukumiem (nodrošināta konstanta visu aprēķinu laika noteikšana) un sniedz labāku veiktspēju salīdzinājumā ar esošo ECDSA realizāciju, kas uzrakstīta C valodā, pie tāda paša aizsardzības līmeņa. Piemēram, EdDSA, izmantojot 126 bitu atslēgu, nodrošina veiktspēju, kas līdzīga ECDSA ar secp256r1 elipsveida līkni un 128 bitu atslēgu.
- eksperimentālais atbalsts 'sealed' klasēm un interfeisiem, kurus nevar izmantot citu klašu un interfeisu mantošanai, paplašināšanai vai realizācijas pārrakstīšanai. 'Sealed' klases arī nodrošina deklaratīvu veidu, kā ierobežot superklases izmantošanu, salīdzinot ar piekļuves modifikatoriem, kas balstās uz tiešu apakšklasēm un atļautām paplašināšanām.
package com.example.geometry;
public sealed class Shape
permits com.example.polar.Circle,
com.example.quad.Rectangle,
com.example.quad.simple.Square {…} - atbalsts slēptajiem klašu, kuras nevar tieši izmantot citu klašu baitkodā. Galvenais mērķis slēptajām klasēm ir to izmantošana ietvaros, kas dinamiskās ģenerē klases izpildes laikā un izmanto tās netieši, caur . Šādām klasēm parasti ir ierobežots mūža ilgums, tāpēc to uzturēšana piekļuvei no statiski ģenerētām klasēm nav pamatota un novedīs tikai pie palielinātas atmiņas patēriņa. Slēptās klases arī ļauj izvairīties no nestandarta API sun.misc.Unsafe::defineAnonymousClass, kas ir ieplānots nākotnē tikt izņemts.
- Stabilizēts un atzīts par gatavu plašam izmantojumam atkritumu savācējs ZGC (Z Garbage Collector). ZGC darbojas pasīvā režīmā, cik vien iespējams minimizējot kavējumus atkritumu savākšanas dēļ (apstāšanās laiks, lietojot ZGC, nepārsniedz 10 ms.) un var darboties gan ar nelielām, gan ar milzīgām kaudzēm, kuru izmērs ir no dažiem simtiem megabaitu līdz daudziem terabaitiem.
- Stabilizēts un atzīts par gatavu plašam izmantojumam
atkritumu savācējs , kas darbojas ar minimālām apstāšanās reizēm (Low-Pause-Time Garbage Collector). Shenandoah izstrādājusi kompānija Red Hat un izceļas ar algoritma izmantošanu, kas samazina apstāšanās laiku atkritumu savākšanas laikā, veicot tīrīšanu paralēli Java lietojumprogrammu izpildei. Atkritumu savācēja izraisīto kavējumu lielums ir prognozējams un nav atkarīgs no kaudzes izmēra, t.i., kaudzēm ar 200 MB un 200 GB kavējums būs identisks ( pār 50 ms un parasti ietilpst 10 ms); - Stabilizēta un ieviesta valodā atbalsts — jaunai virsmas literālo virkņu formai, kas ļauj iekļaut avota kodā daudzrindas teksta datus bez simbolu escēšanas un saglabājot sākotnējo teksta formatējumu blokā. Bloka apvākošana tiek veikta ar trim dubultām pēdiņām.
Piemēram, vietā, lai izmantotu kodu
String html = „<HTML>” +
„\n\t” + „<BODY>” +
«\n\t\t» + «„Java 15 ir klāt!”
» +
„\n\t” + „<\/BODY>” +
„\n” + „<\/HTML>”;var rakstīt:
String html = „””
<HTML>
<BODY>„Java 15
ir klāt!»<\/H1>
<\/BODY>
<\/HTML>»””; - API Legacy DatagramSocket. Vecās implementācijas java.net.DatagramSocket un java.net.MulticastSocket ir aizstātas ar mūsdienīgu implementāciju, kas ir vienkāršāka izgūšanai un apkopei, kā arī saderīga ar virtuālajiem straumēm, kas tiek attīstītas projekta . Gadījumā, ja varētu rasties saderības problēmas ar esošo kodu, vecā īstenošana netika dzēsta un to var aktivizēt, izmantojot opciju jdk.net.usePlainDatagramSocketImpl.
- Ieteikts otrais eksperimentālais īstenojums instanceof operatorā, kas ļauj tūlīt noteikt lokālo mainīgo piekļuvei pārbaudītajam vērtībai. Piemēram, var tūlīt rakstīt «if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}» bez skaidri definējot «String s = (String) obj».
Bija:
if (obj instanceof Group) {
Group group = (Group) obj;
var entries = group.getEntries();
}Tagad var iztikt bez definēšanas «Group group = (Group) obj»:
if (obj instanceof Group group) {
var entries = group.getEntries();
} - otra eksperimentālā īstenošana atslēgvārda ««, nodrošinot kompakto formu klašu noteikšanai, ļaujot iztikt bez skaidras dažādu zemu līmeņu metožu, piemēram, equals(), hashCode() un toString(), definēšanas, kad dati tiek glabāti tikai laukos, kuru darbības uzvedība nemainās. Kad klasē tiek izmantotas tipiskas metožu equals(), hashCode() un toString() implementācijas, tajā var iztikt bez to skaidras definēšanas:
public record BankTransaction(LocalDate date,
double amount,
String description) {}Šis paziņojums nov leads pie automātiskas equals(), hashCode() un toString() metožu implementāciju pievienošanas papildus konstruktoram un metodēm, kas kontrolē datu izmaiņas (getter).
- otrais priekšzinātnes Foreign-Memory Access API variants, kas ļauj Java lietotnēm droši un efektīvi piekļūt atmiņas apgabaliem ārpus Java kaudzes, manipulējot ar jaunām abstrakcijām MemorySegment, MemoryAddress un MemoryLayout.
- un atzīts par novecojušu Biased Locking optimizācijas tehniku, kas tika izmantota HotSpot JVM, lai samazinātu bloķēšanas izdevumus. Šī tehnika ir zaudējusi aktualitāti mūsdienu CPU nodrošināto atomāro instrukciju dēļ un ir pārāk sarežģīta uzturēšanai.
- par novecojušu mehānismu , kas tiks dzēsts kādā no nākamajiem laidieniem. Norādīts, ka RMI Activation ir novecojis, pārveidots par opciju jau Java 8 un mūsdienu praksē praktiski netiek izmantots.
- JavaScript dzinējs , kas tika atzīts par novecojušu Java SE 11.
- porti Solaris OS un SPARC procesoriem (Solaris/SPARC, Solaris/x64 un Linux/SPARC). Minēto portu noņemšana ļaus kopienai paātrināt jaunu OpenJDK iespēju izstrādi, netērējot laiku, uzturot Solaris un SPARC specifiskas īpašības.
Avots: opennet.lv
