Versione di Java SE 20

Dopu sei mesi di sviluppu, Oracle hà liberatu Java SE 20 (Java Platform, Standard Edition 20), chì usa u prughjettu OpenJDK open-source cum'è implementazione di riferimentu. Cù l'eccezzioni di a rimozione di alcune funzioni obsolete, Java SE 20 mantene a cumpatibilità retrocede cù versioni precedenti di a piattaforma Java - a maiò parte di i prughjetti Java scritti prima funzionaranu senza cambiamenti quandu eseguite sottu a nova versione. I build pronti per l'installazione di Java SE 20 (JDK, JRE è Server JRE) sò pronti per Linux (x86_64, AArch64), Windows (x86_64) è macOS (x86_64, AArch64). Sviluppatu da u prughjettu OpenJDK, l'implementazione di riferimentu Java 20 hè cumplettamente open source sottu a licenza GPLv2, cù l'eccezzioni GNU ClassPath chì permettenu ligami dinamichi cù i prudutti cummerciale.

Java SE 20 hè classificatu cum'è una versione di supportu regulare è continuerà à riceve l'aghjurnamenti finu à a prossima versione. A filiera di Support Long Term (LTS) deve esse Java SE 17, chì continuarà à riceve l'aghjurnamenti finu à u 2029. Ricurdemu chì, principiendu cù a liberazione di Java 10, u prugettu hà cambiatu à un novu prucessu di sviluppu, chì implica un ciculu più curtu per a furmazione di novi versioni. A nova funziunalità hè issa sviluppata in un ramu maestru constantemente aghjurnatu, chì include cambiamenti pronti è da quali rami sò ramificati ogni sei mesi per stabilizzà e novi versioni.

I novi funziunalità in Java 20 includenu:

  • Ci hè un supportu preliminariu per i Valori Scoped, chì permette à e dati immutabili di esse spartuti trà i fili è i dati scambiati in modu efficiente trà i fili di i zitelli (i valori sò ereditati). I Valori Scoped sò sviluppati per rimpiazzà u mecanismu di variabili lucali di filu è sò più efficaci quandu utilizanu un gran numaru di fili virtuali (millaie o milioni di fili). A principal diferenza trà i Valori Scoped è e variabili lucali di filu hè chì i primi sò scritti una volta, ùn ponu esse cambiati in u futuru, è restanu dispunibili solu per a durata di l'esekzione di u filu. class Server { final static ScopedValue CURRENT_USER = new ScopedValue (); void serve (Request request, Response response) {var level = (request. isAuthorized()? ADMIN: GUEST); var user = novu User (livellu); ScopedValue.where (CURRENT_USER, user).run (() -> Application.handle (richiesta, risposta)); } } class DatabaseManager { DBConnection open () { var user = Server.CURRENT_USER.get (); if (! user.canOpen ()) getta novu InvalidUserException (); rinvià a nova DBConnection (...); } }
  • Una seconda anteprima di mudelli di registrazione hè stata aghjunta, estendendu a funzione di cuncordanza di mudelli introdutta in Java 16 per analizà i valori di classi di record. Per esempiu: record Point(int x, int y) {} static void printSum (Object obj) { if (obj instance of Point p) { int x = px (); int y = py(); System.out.println(x+y); } }
  • Una quarta implementazione preliminare di currispondenza di mudelli in dichjarazioni "switch" hè stata aghjunta, chì permette à l'etichette "casu" di utilizà micca valori esatti, ma mudelli flessibili chì coprenu una seria di valori in una volta, per quale prima era necessariu di utilizà ingombrante. catene di espressioni "se ... altru". 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); default -> o.toString(); }; }
  • Una seconda implementazione preliminare di l'API FFM (Foreign Function & Memory) hè stata aghjunta, chì vi permette di urganizà l'interazzione di i prugrammi Java cù u codice esternu è e dati attraversu e funzioni di chjamate da biblioteche esterne è accede à a memoria fora di a JVM.
  • Una seconda vista previa di fili virtuali hè stata aghjunta, chì sò filamenti ligeri chì simplificà assai a scrittura è mantene l'applicazioni multi-threaded d'altu rendiment.
  • Aggiunta una seconda API sperimentale per u parallelismu strutturatu, chì simplificà u sviluppu di l'applicazioni multi-threaded trattendu parechje attività in esecuzione in diversi fili cum'è un solu bloccu.
  • Una quinta vista previa di l'API Vector hè stata aghjunta, chì furnisce funzioni per i calculi vettoriali chì sò realizati cù struzzioni vettoriali nantu à i processori x86_64 è AArch64 è permettenu l'operazioni per esse applicate simultaneamente à parechji valori (SIMD). A cuntrariu di e capacità furnite in u compilatore HotSpot JIT per l'auto-vectorizazione di l'operazioni scalari, a nova API permette di cuntrollà esplicitamente a vectorizazione per u prucessu di dati paralleli.

Source: opennet.ru

Add a comment