Java SE 20 udgivelse

Efter seks måneders udvikling har Oracle frigivet Java SE 20 (Java Platform, Standard Edition 20) platformen, som bruger OpenJDK open source-projektet som referenceimplementering. Med undtagelse af fjernelse af nogle forældede funktioner, bevarer Java SE 20 bagudkompatibilitet med tidligere udgivelser af Java-platformen - de fleste tidligere skrevne Java-projekter vil stadig fungere uden ændringer, når de køres under den nye version. Klar til at installere builds af Java SE 20 (JDK, JRE og Server JRE) er forberedt til Linux (x86_64, AArch64), Windows (x86_64) og macOS (x86_64, AArch64). Java 20-referenceimplementeringen er udviklet af OpenJDK-projektet og er fuldt åben under GPLv2-licensen med GNU ClassPath-undtagelser for at tillade dynamiske links til kommercielle produkter.

Java SE 20 er kategoriseret som en almindelig supportudgivelse, med opdateringer, der skal frigives inden næste udgivelse. Den langsigtede support (LTS) filial bør være Java SE 17, som vil modtage opdateringer indtil 2029. Husk, at fra og med udgivelsen af ​​Java 10 skiftede projektet til en ny udviklingsproces, hvilket indebærer en kortere cyklus for dannelsen af ​​nye udgivelser. Ny funktionalitet udvikles nu i én konstant opdateret mastergren, som inkorporerer allerede gennemførte ændringer, og hvorfra filialer forgrenes hvert halve år for at stabilisere nye udgivelser.

Nye funktioner i Java 20 inkluderer:

  • Foreløbig understøttelse af Scoped Values ​​er blevet foreslået, som gør det muligt at dele uforanderlige data i tråde og effektivt udveksle data mellem underordnede tråde (værdier er nedarvet). Scoped Values ​​er ved at blive udviklet til at erstatte tråd-lokale variabler-mekanismen og er mere effektive, når der bruges meget store antal virtuelle tråde (tusinder og millioner af tråde). Den største forskel mellem Scoped Values ​​og tråd-lokale variabler er, at de første er skrevet én gang, ikke kan ændres senere og kun forbliver tilgængelige i løbet af trådudførelsen. class Server { final static ScopedValue CURRENT_USER = new ScopedValue(); void serve(Request request, Response response) { var level = (request. isAuthorized()? ADMIN: GÆST); var bruger = ny bruger(niveau); ScopedValue.where(CURRENT_USER, bruger) .run(() -> Application.handle(request, response)); } } klasse DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); if (!user.canOpen()) kaster ny InvalidUserException(); returnere ny DBConnection(...); } }
  • En anden foreløbig implementering af registreringsmønstre er blevet tilføjet, hvilket udvider Java 16-mønstertilpasningsevnen til at parse værdierne af klasser af typepost. For eksempel: record Point(int x, int y) {} statisk tomrum printSum(Objekt obj) { if (obj-forekomst af punkt p) { int x = px(); int y = py(); System.out.println(x+y); } }
  • En fjerde foreløbig implementering af mønstermatchning i switch-udtryk er blevet tilføjet, som gør det muligt at bruge fleksible skabeloner i case-etiketter, der dækker en række værdier på én gang, for hvilke besværlige kæder af if...else-sætninger tidligere var blevet brugt. static String formatterPatternSwitch(Object obj) { return switch (obj) { case Integer i -> String.format("int %d", i); case Lang l -> String.format("lang %d", l); kasus Dobbelt d -> String.format("dobbelt %f", d); case String s -> String.format("String %s", s); default -> o.toString(); }; }
  • En anden foreløbig implementering af FFM (Foreign Function & Memory) API er blevet tilføjet, som giver dig mulighed for at organisere interaktionen af ​​Java-programmer med ekstern kode og data ved at kalde funktioner fra eksterne biblioteker og få adgang til hukommelse uden for JVM.
  • En anden foreløbig implementering af virtuelle tråde er blevet tilføjet, som er lette tråde, der i høj grad forenkler skrivning og vedligeholdelse af højtydende flertrådede applikationer.
  • En anden variant af den eksperimentelle Structured Parallelism API er blevet tilføjet for at forenkle udviklingen af ​​multitrådede applikationer ved at behandle flere opgaver, der kører på forskellige tråde, som en enkelt enhed.
  • En femte foreløbig implementering af Vector API er blevet tilføjet, som giver funktioner til vektorberegninger, der udføres ved hjælp af vektorinstruktioner på x86_64- og AArch64-processorerne og giver dig mulighed for at anvende operationer på flere værdier på én gang (SIMD). I modsætning til mulighederne i HotSpot JIT-kompileren til autovektorisering af skalaroperationer, gør den nye API det muligt eksplicit at kontrollere vektorisering til parallel databehandling.

Kilde: opennet.ru

Tilføj en kommentar