La prossima release di supporto a lungo termine di Java standard, Java Development Kit (JDK) 21, è prevista per settembre e comprenderà collezioni sequenziate, thread virtuali, modelli di stringhe e un'API per funzioni e memorie esterne (in anteprima). Queste caratteristiche sono destinate a migliorare l'esperienza degli sviluppatori in aree che vanno dalla scrittura alla manutenzione e al monitoraggio di applicazioni concorrenti ad alto rendimento.
Sebbene non sia ancora presente nella pagina di rilascio del JDK 21, si ritiene che l'anteprima dell'API per le funzioni e la memoria straniere sia stata aggiunta di recente. Questa API consente ai programmi Java di interagire senza problemi con codice e dati esterni al runtime Java. Permette una comunicazione efficiente con le funzioni esterne e un accesso sicuro alla memoria esterna, consentendo ai programmi Java di interagire con le librerie native e di elaborare dati nativi senza la fragilità e i rischi posti dalla Java Native Interface (JNI).
L'API per le funzioni e la memoria straniera è stata presentata in anteprima in JDK 20 e JDK 19, rilasciati rispettivamente a marzo e settembre dello scorso anno. L'ultima anteprima include miglioramenti come il miglioramento dei percorsi di layout, la gestione centralizzata dei tempi di vita dei segmenti nativi nell'interfaccia Arena, un'implementazione del linker nativo di fallback e la rimozione della VaList. Gli obiettivi di questa API comprendono facilità d'uso, prestazioni, generalità e sicurezza. Tuttavia, non mira a sostituire JNI o a modificarla in alcun modo.
JDK 21 porterà anche la finalizzazione dei thread virtuali, che sono thread leggeri e promettono di ridurre drasticamente le sfide legate alla scrittura, alla manutenzione e all'osservazione di applicazioni concorrenti ad alto rendimento. Gli obiettivi di questa funzionalità sono: consentire alle applicazioni server di scalare in modo efficace con un utilizzo ottimale dell'hardware, promuovere l'adozione dei thread virtuali con modifiche minime al codice API lang.Thread esistente e semplificare il debugging e il profiling dei thread virtuali con gli attuali strumenti del JDK. Il JDK 21 garantirà il supporto completo delle variabili thread-local con i thread virtuali, aumentando la compatibilità con le librerie esistenti e favorendo la migrazione del codice basato su task all'uso dei thread virtuali.
Le collezioni sequenziate sono un'altra caratteristica che accompagnerà JDK 21. Queste interfacce consentono la rappresentazione di collezioni con un chiaro ordine di incontro, in cui ogni collezione ha un primo e un secondo elemento ben definiti e così via. Saranno fornite API uniformi per facilitare l'accesso al primo e all'ultimo elemento e per invertire l'ordine di elaborazione degli elementi. Definendo interfacce di sequenziamento per collezioni, insiemi e mappe, questa proposta mira a colmare le lacune del framework delle collezioni di Java e a soddisfare le richieste degli utenti di lunga data.
I modelli di stringa debutteranno come funzionalità di anteprima nel JDK 21, migliorando i letterali di stringa e i blocchi di testo esistenti in Java, unendo il testo letterale con espressioni e processori incorporati per generare risultati specializzati. L'intento principale di questa funzione è quello di semplificare la programmazione Java rendendo più facile l'espressione di stringhe che incorporano valori calcolati in tempo reale. I modelli di stringa sono progettati per migliorare la leggibilità delle espressioni, aumentare la sicurezza dei programmi, mantenere la flessibilità e facilitare il lavoro con le API che accettano stringhe scritte in linguaggi diversi da Java.
Secondo il piano di rilascio proposto per JDK 21, l'elenco delle funzionalità sarà congelato dopo le fasi di rampdown dell'8 giugno e del 20 luglio, durante le quali continueranno le correzioni dei bug. Le release candidate iniziali e finali seguiranno il 10 e il 24 agosto, con la possibilità di correggere i bug. La disponibilità generale è prevista per il 19 settembre.
JDK 21 sarà una release di supporto a lungo termine (LTS), che fornirà cinque anni di supporto Premier e un supporto esteso fino a settembre 2031. JDK 17, l'attuale versione LTS, è stata rilasciata nel settembre 2021. Le versioni non LTS, tra cui JDK 20 e JDK 19, ricevono solo sei mesi di supporto Premier e nessun supporto esteso.
Le implementazioni standard di Java di Oracle vengono pubblicate ogni sei mesi e le potenziali funzionalità per JDK 21 includono tutte le funzionalità in incubazione e in anteprima di JDK 20. Queste possono comprendere valori scopiazzati e valori di riferimento. Queste potrebbero comprendere valori con scope, pattern di record e pattern matching per le istruzioni switch, oltre a generici universali, il garbage collector generazionale Z e l'API VM asincrona per lo stack trace. Anche altre piattaforme all'avanguardia, come quelle no-code e low-code, come AppMaster, possono beneficiare di questi progressi nella tecnologia Java.