Java SE 20 laidiens

Pēc sešu mēnešu izstrādes Oracle ir izlaidusi Java SE 20 (Java Platform, Standard Edition 20), kas izmanto OpenJDK atvērtā pirmkoda projektu kā atsauces ieviešanu. Izņemot dažu novecojušu funkciju noņemšanu, Java SE 20 saglabā atpakaļsaderību ar iepriekšējiem Java platformas laidieniem — lielākā daļa iepriekš rakstīto Java projektu joprojām darbosies bez izmaiņām, ja tie darbojas jaunajā versijā. Instalējamās Java SE 20 (JDK, JRE un Server JRE) versijas ir sagatavotas operētājsistēmai Linux (x86_64, AArch64), Windows (x86_64) un macOS (x86_64, AArch64). Izstrādāts OpenJDK projektā, Java 20 atsauces ieviešana ir pilnībā atvērta saskaņā ar GPLv2 licenci ar GNU ClassPath izņēmumiem, lai nodrošinātu dinamisku saiti ar komerciāliem produktiem.

Java SE 20 ir klasificēts kā regulārs atbalsta laidiens, un tas turpinās saņemt atjauninājumus līdz nākamajam laidienam. Ilgtermiņa atbalsta (LTS) filiālei vajadzētu būt Java SE 17, kas turpinās saņemt atjauninājumus līdz 2029. gadam. Atgādinām, ka, sākot ar Java 10 izlaišanu, projekts pārgāja uz jaunu izstrādes procesu, kas nozīmē īsāku ciklu jaunu laidienu veidošanai. Jauna funkcionalitāte tagad ir izstrādāta vienā pastāvīgi atjauninātajā galvenajā filiālē, kas ietver gatavas izmaiņas un no kuras filiāles tiek atzarotas ik pēc sešiem mēnešiem, lai stabilizētu jaunus izdevumus.

Jaunās Java 20 funkcijas ietver:

  • Pastāv sākotnējais atbalsts aptvertajām vērtībām, kas ļauj koplietot nemainīgus datus pa pavedieniem un efektīvi apmainīties ar datiem starp pakārtotajiem pavedieniem (vērtības tiek mantotas). Tiek izstrādātas tvēruma vērtības, lai aizstātu pavedienu lokālo mainīgo mehānismu, un tās ir efektīvākas, ja tiek izmantots ļoti liels skaits virtuālo pavedienu (tūkstošiem vai miljoniem pavedienu). Galvenā atšķirība starp aptvertajām vērtībām un pavedienu lokālajiem mainīgajiem ir tāda, ka pirmie tiek rakstīti vienreiz, tos nevar mainīt nākotnē un tie ir pieejami tikai pavediena izpildes laikā. class Server { gala static ScopedValue CURRENT_USER = new ScopedValue(); void serve(Pieprasījuma pieprasījums, atbildes atbilde) { var līmenis = (pieprasījums. isAuthorized()? ADMINIS : VIESIS); var user = new User(level); ScopedValue.where(CURRENT_USER, user).run(() -> Application.handle(pieprasījums, atbilde)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); if (!user.canOpen()) mest jaunu InvalidUserException(); atgriezt jaunu DBConnection(...); } }
  • Ir pievienots otrs ierakstu modeļu priekšskatījums, paplašinot Java 16 ieviesto modeļu atbilstības funkciju, lai parsētu ierakstu klašu vērtības. Piemēram: ieraksts Punkts(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = px(); int y = py(); System.out.println(x+y); } }
  • Ir pievienota ceturtā sākotnējā modeļu saskaņošanas ieviešana “switch” paziņojumos, ļaujot “case” etiķetēm izmantot nevis precīzas vērtības, bet gan elastīgus modeļus, kas aptver virkni vērtību vienlaikus, kam iepriekš bija nepieciešams izmantot apgrūtinošus “ja...citādi” izteicienu ķēdes. static String formatterPatternSwitch(Object obj) { return switch (obj) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); noklusējuma -> o.toString(); }; }
  • Ir pievienota otrā sākotnējā FFM (Foreign Function & Memory) API ieviešana, kas ļauj organizēt Java programmu mijiedarbību ar ārēju kodu un datiem, izsaucot funkcijas no ārējām bibliotēkām un piekļūstot atmiņai ārpus JVM.
  • Ir pievienots otrs virtuālo pavedienu priekšskatījums, kas ir viegli pavedieni, kas ievērojami vienkāršo augstas veiktspējas daudzpavedienu lietojumprogrammu rakstīšanu un uzturēšanu.
  • Pievienots otrs eksperimentāls API strukturētam paralēlismam, kas vienkāršo vairāku pavedienu lietojumprogrammu izstrādi, apstrādājot vairākus uzdevumus, kas darbojas dažādos pavedienos, kā vienu bloku.
  • Ir pievienots piektais Vector API priekšskatījums, kas nodrošina vektoru aprēķinu funkcijas, kas tiek veiktas, izmantojot vektoru instrukcijas x86_64 un AArch64 procesoros, un ļauj vienlaikus lietot darbības vairākām vērtībām (SIMD). Atšķirībā no HotSpot JIT kompilatora piedāvātajām iespējām skalāro operāciju automātiskai vektorizācijai, jaunais API ļauj skaidri kontrolēt vektorizāciju paralēlai datu apstrādei.

Avots: opennet.ru

Pievieno komentāru