UPGRD

Tutte le ultime notizie tech e non

tecnologia

Java JDK 23: Scopri le Novità in Due Minuti

By ,

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.

FAQ

Quali sono le principali novità introdotte in Java JDK 23?

Java JDK 23 introduce 12 nuove JEPs, tra cui il supporto al Markdown in JavaDoc, miglioramenti al Garbage Collector ZGC, la deprecazione delle API Unsafe, e nuove funzionalità come i tipi primitivi nei pattern.

Come si utilizza il supporto al Markdown in JavaDoc?

Per utilizzare il supporto al Markdown in JavaDoc, è sufficiente iniziare la riga con tre barre oblique (///). Questo migliora la leggibilità della documentazione direttamente dal codice sorgente.

Qual è la novità riguardante il Garbage Collector ZGC in JDK 23?

Il Garbage Collector ZGC adotta ora come predefinita la modalità generazionale, ma è ancora possibile utilizzare la modalità a generazione singola tramite l'argomento della JVM -Zgenerational.

Cosa significa la deprecazione delle API Unsafe?

Le API Unsafe, come quelle in sun.misc.Unsafe, sono destinate alla rimozione. Si consiglia di migrare verso API più sicure come VarHandle e le API foreign function and memory.

Qual è l'obiettivo della JEP 455?

La JEP 455 introduce i tipi primitivi nei pattern, facilitando l'uso di valori primitivi come boolean, byte, char e long nei pattern, riducendo il gap tra tipi primitivi e complessi.

Cosa introduce la JEP 466?

La JEP 466 ripropone l'anteprima dell'API per i file di classe, introducendo importanti cambiamenti nella gestione dei file di classe.

Qual è la funzione degli StreamGatherers introdotti nella JEP 473?

La JEP 473 presenta una seconda anteprima per gli StreamGatherers, una nuova operazione intermedia che offre maggiore flessibilità nella trasformazione dei contenuti di uno stream.

Cosa sono le dichiarazioni di importazione di moduli introdotte dalla JEP 477?

Le dichiarazioni di importazione di moduli permettono di importare l'intera API pubblica di un modulo con una sola linea, semplificando l'approccio alla struttura dei package del JDK.

Quali sono le novità riguardanti la concorrenza strutturata e i Scope Values?

La concorrenza strutturata (JEP 480) è in terza anteprima senza cambiamenti rilevanti, mentre i Scope Values (JEP 481) hanno visto una modifica nel tipo del parametro di operazione del metodo scopeValue.callWhere.

Cosa introduce la JEP 482 riguardo ai costruttori?

La JEP 482 introduce la possibilità di allentare le restrizioni sui costruttori, consentendo di inizializzare campi nella sottoclasse prima di chiamare super().

Qual è lo stato della Vector API in JDK 23?

La Vector API (JEP 469) rimane in stato di incubazione e il suo avanzamento dipenderà dai progressi del Project Valhalla.