Versione Java SE 19

Dopo sei mesi di sviluppo, Oracle ha rilasciato la piattaforma Java SE 19 (Java Platform, Standard Edition 19), che utilizza il progetto open source OpenJDK come implementazione di riferimento. Ad eccezione della rimozione di alcune funzionalità deprecate, Java SE 19 mantiene la retrocompatibilità con le versioni precedenti della piattaforma Java: la maggior parte dei progetti Java scritti in precedenza continuerà a funzionare senza modifiche quando viene eseguita con la nuova versione. Le build pronte per l'installazione di Java SE 19 (JDK, JRE e Server JRE) sono preparate per Linux (x86_64, AArch64), Windows (x86_64) e macOS (x86_64, AArch64). Sviluppata dal progetto OpenJDK, l'implementazione di riferimento Java 19 è completamente open source con licenza GPLv2 con eccezioni GNU ClassPath per consentire il collegamento dinamico a prodotti commerciali.

Java SE 19 è classificato come versione di supporto regolare, con aggiornamenti da rilasciare prima della versione successiva. Il ramo di supporto a lungo termine (LTS) dovrebbe essere Java SE 17, che riceverà aggiornamenti fino al 2029. Ricordiamo che a partire dal rilascio di Java 10, il progetto è passato a un nuovo processo di sviluppo, che implica un ciclo più breve per la formazione di nuove versioni. Nuove funzionalità sono ora in fase di sviluppo in un ramo principale costantemente aggiornato, che include modifiche già completate e da cui i rami vengono ramificati ogni sei mesi per stabilizzare le nuove versioni.

Le nuove funzionalità di Java 19 includono:

  • È stato proposto un supporto preliminare per i record pattern, estendendo la capacità di pattern matching di Java 16 per analizzare i valori delle classi di tipo record. Ad esempio: record Point(int x, int y) {} void printSum(Object o) { if (o instanceof Point(int x, int y)) { System.out.println(x+y); } }
  • Le build Linux forniscono il supporto per l'architettura RISC-V.
  • Aggiunto il supporto preliminare per l'API FFM (Foreign Function & Memory), che consente di organizzare l'interazione di programmi Java con codice e dati esterni tramite funzioni di chiamata da librerie esterne e accesso alla memoria all'esterno della JVM.
  • Aggiunto il supporto per i thread virtuali, che sono thread leggeri che semplificano notevolmente la scrittura e il mantenimento di applicazioni multi-thread ad alte prestazioni.
  • Viene proposta la quarta implementazione preliminare dell'API Vector, che fornisce funzioni per i calcoli vettoriali che vengono eseguiti utilizzando le istruzioni vettoriali dei processori x86_64 e AArch64 e consentono di applicare contemporaneamente operazioni a più valori contemporaneamente (SIMD). A differenza delle funzionalità fornite nel compilatore HotSpot JIT per l'autovettorizzazione delle operazioni scalari, la nuova API consente di controllare in modo esplicito la vettorizzazione per l'elaborazione parallela dei dati.
  • È stata aggiunta una terza implementazione sperimentale del pattern matching nelle espressioni switch, che consente di utilizzare template flessibili in case label che coprono una serie di valori contemporaneamente, per i quali in precedenza erano state utilizzate ingombranti catene di istruzioni if...else. Oggetto o = 123L; Stringa formattata = switch (o) { 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 Stringa s -> String.format("Stringa %s", s); default -> o.toString(); };
  • È stata aggiunta un'API sperimentale di parallelismo strutturato che semplifica lo sviluppo di applicazioni multi-thread trattando più attività in esecuzione su thread diversi come una singola unità.

Fonte: opennet.ru

Aggiungi un commento