Introduzione al JDK 23
Oggi è il giorno del rilascio ufficiale di Java JDK 23, una versione attesa che introduce 12 nuove JEPs (Java Enhancement Proposals). In questo articolo esploreremo rapidamente le principali novità, tra cui il supporto al Markdown in JavaDoc, miglioramenti a ZGC, e molto altro.
JavaDoc con Supporto Markdown
Una delle novità più rilevanti è l'introduzione del supporto al Markdown in JavaDoc, utilizzando la notazione upmark. Per applicare il Markdown, è sufficiente iniziare la riga con tre barre oblique (///
). Questo miglioramento semplifica la leggibilità della documentazione direttamente dal codice sorgente.
ZGC in Modalità Generazionale
Il Garbage Collector ZGC adotta ora come predefinita la modalità generazionale, introdotta per la prima volta in JDK 21. Tuttavia, è ancora possibile utilizzare la modalità a generazione singola attraverso l'argomento della JVM -Zgenerational
, anche se è prevista la sua graduale eliminazione nelle versioni future.
Deprecazione delle API Unsafe
Le API Unsafe per l'accesso alla memoria, come quelle in sun.misc.Unsafe
, sono destinate alla rimozione. Si consiglia di migrare alle API equivalenti, come VarHandle e le API foreign function and memory, introdotte rispettivamente in JDK 9 e JDK 22.
JEP in Anteprima
Tra le 8 JEPs in anteprima, si segnala la JEP 455, che introduce i tipi primitivi nei pattern. Questa JEP mira a facilitare l'uso di valori primitivi come boolean, byte, char, e long nei pattern, riducendo il gap tra tipi primitivi e complessi.
API del File di Classe e StreamGatherers
La JEP 466 ripropone l'anteprima dell'API per i file di classe, introducendo importanti cambiamenti. La JEP 473, invece, presenta una seconda anteprima per gli StreamGatherers, una nuova operazione intermedia che offre maggiore flessibilità nella trasformazione dei contenuti di uno stream.
Dichiarazioni di Importazione di Moduli
Con la JEP 477, vengono introdotte le dichiarazioni di importazione di moduli, che permettono di importare l'intera API pubblica di un modulo con una sola linea. Una novità particolarmente utile per chi si avvicina per la prima volta alla struttura dei package del JDK.
Concorrenza Strutturata e Scope Values
La concorrenza strutturata (JEP 480) entra nella sua terza anteprima, anche se non sono stati apportati cambiamenti rilevanti. Un’altra importante anteprima riguarda i Scope Values (JEP 481), che vedono una modifica nel tipo del parametro di operazione del metodo scopeValue.callWhere
, rendendolo un'interfaccia funzionale.
Costruttori: Anteprima della JEP 482
La JEP 482 introduce la possibilità di allentare le restrizioni sui costruttori. Ora è possibile inizializzare campi nella sottoclasse prima di chiamare super()
, offrendo maggiore flessibilità nella scrittura dei costruttori.
Vector API e Project Valhalla
L'unica JEP che rimane in stato di incubazione è la Vector API (JEP 469). Il suo avanzamento dipenderà dai progressi del Project Valhalla.
Queste sono alcune delle principali novità di JDK 23. Resta sintonizzato per ulteriori dettagli nei prossimi aggiornamenti.