Oracle ha annunciato la disponibilità di Java 25, la nuova versione del linguaggio di programmazione e della piattaforma di sviluppo numero uno al mondo.
Java 25 (Oracle JDK 25) aiuterà le organizzazioni a crescere; sono stati introdotti migliaia di miglioramenti che rendono gli sviluppatori più produttivi e aumentano le performance, la stabilità e la sicurezza della piattaforma. Inoltre, Oracle ha annunciato che offrirà supporto a lungo termine per la nuova release, per almeno otto anni.
Oracle ha intenzione di offrire supporto a lungo termine per Java 25 per almeno otto anni. In questo modo tutte le organizzazioni avranno la flessibilità necessaria per mantenere le applicazioni in produzione più a lungo con una manutenzione minima e, infine, di eseguire la migrazione alle proprie condizioni. Oracle JDK 25 riceverà aggiornamenti trimestrali di sicurezza e performance fino a settembre 2028 in base alle Oracle No-Fee Terms and Conditions (NFTC); gli aggiornamenti JDK 25 rilasciati dopo tale data saranno offerti in base alla Java SE OTN License (OTN) pianificata fino almeno a settembre 2033.
JDK Enhancement Proposals (JEPs) principali funzioni di linguaggio di Oracle JDK 25
JEP 507: Primitive Types in Patterns, instanceof, and switch (terza anteprima): aiuta gli sviluppatori ad aumentare la produttività della programmazione Java rendendo il linguaggio più uniforme ed espressivo. Per esempio, gli sviluppatori possono migliorare la corrispondenza dei pattern rimuovendo le restrizioni relative ai tipi primitivi che incontrano quando utilizzano la corrispondenza dei pattern, instanceof e switch. Consente, inoltre, di utilizzare pattern di tipo primitivo in tutti i contesti ed estende instanceof e switch a tutti i tipi primitivi. Il supporto di tipi primitivi andrà particolarmente a vantaggio degli sviluppatori che creano applicazioni che integrano l’inferenza AI.
JEP 511: Module Import Declarations: aiutano gli sviluppatori ad accelerare la produttività consentendo loro di importare facilmente tutti i pacchetti esportati da un modulo, senza aver bisogno che anche il codice di importazione si trovi in un modulo. Questo semplifica il riutilizzo delle librerie modulari da parte di tutti gli sviluppatori e consente anche a sviluppatori principianti di utilizzare librerie di terze parti e classi Java fondamentali, senza preoccuparsi del punto in cui si trovano nella gerarchia di pacchetti. Inoltre, gli sviluppatori possono evitare il noise di varie dichiarazioni type-import-on-demand quando utilizzano diverse parti dell’API esportate da un modulo, il che è vantaggioso per realizzare applicazioni semplici che uniscono l’inferenza AI e i flussi di lavoro delle librerie più diffuse.
JEP 512: Compact Source Files and Instance Main Methods: aiuta a rendere il linguaggio Java più accessibile a principianti e amministratori di sistema e IT offrendo una programmazione Java semplice e on-ramp. Gli studenti possono scrivere i loro primi programmi in modo conciso, senza dover comprendere le funzioni di linguaggio progettate per programmi di grandi dimensioni e possono far crescere la loro capacità di coding man mano che le loro competenze si espandono. Inoltre, gli amministratori di sistema e IT, che potrebbero non essere esperti Java, possono aver meno bisogno di scrivere piccoli programmi, come script e command-line utility.
JEP 513: Flexible Constructor Bodies: consente agli sviluppatori di migliorare la sicurezza e l’affidabilità del codice attraverso la convalida dell’input e calcoli sicuri, prima di richiamare esplicitamente un costruttore. Ciò aumenta la sicurezza del codice, consentendo espressioni costruttori più naturali e abilitando l’inizializzazione del campo prima che siano visibili ad altri codici classe, come i metodi chiamati da un costruttore superclasse. Inoltre, migliora l’affidabilità impedendo ai costruttori sottoclasse di interferire con la creazione di istanze superclasse.
Librerie Oracle JDK 25
JEP 505: Structured Concurrency (quinta anteprima): aiuta gli sviluppatori a migliorare la manutenibilità, l’affidabilità e l’osservabilità del codice multithreaded semplificando la programmazione concorrente. I gruppi di attività correlate eseguiti all’interno di thread diversi sono gestiti come una singola unità di lavoro e, la concorrenza strutturata aiuta a ridurre i rischi più comuni derivanti da operazioni di annullamento e chiusura, come le perdite di thread e i ritardi di annullamento. Ciò è particolarmente vantaggioso per lo sviluppo dell’intelligenza artificiale, che spesso implica l’esecuzione di più task in parallelo.
JEP 506: Scoped Values: aiuta gli sviluppatori ad aumentare la facilità d’uso, la comprensibilità, le prestazioni e l’affidabilità dei loro progetti, consentendo la condivisione di dati immutabili all’interno dei thread e fra thread diversi. Ciò è particolarmente vantaggioso per le applicazioni che utilizzano piattaforme AI, web frame e microservizi. Inoltre, è più facile ragionare con i valori delimitati rispetto alle variabili thread-local e si riducono i costi di spazio e tempo, soprattutto se si utilizzano anche thread virtuali e concorrenza strutturata.
JEP 502: Stable Values (anteprima): aiuta gli sviluppatori ad aumentare la flessibilità introducendo un’API per valori stabili, ovvero oggetti che contengono dati immutabili. Poiché i valori stabili sono considerati costanti dalla Java Virtual Machine, essi consentono le stesse ottimizzazioni di performance della dichiarazione finale di un campo e offrono, al contempo, una maggiore flessibilità nelle tempistiche di inizializzazione.
JEP 508: Vector API (decima versione incubator): aiuta gli sviluppatori a migliorare la produttività con un’API che esprime calcoli vettoriali che si compilano in modo affidabile in fase di esecuzione, per eseguire istruzioni vettoriali ottimali sulle architetture di CPU supportate. Di conseguenza, gli sviluppatori possono ottenere prestazioni superiori a quelle dei calcoli scalari equivalenti, spesso utilizzati negli scenari di inferenza e calcolo dell’intelligenza artificiale.
Librerie di sicurezza Oracle JDK 25
JEP 470: PEM Encodings of Cryptographic Objects (anteprima): aiuta gli sviluppatori ad aumentare la produttività tramite una nuova API per la codifica degli oggetti. L’API codifica gli oggetti che rappresentano chiavi crittografiche, certificati e liste di revoca dei certificati in un formato mail transport ampiamente utilizzato e ottimizzato per la privacy, e decodifica da tale formatogli oggetti. Ciò facilita l’integrazione delle applicazioni Java con sistemi di autenticazione di sicurezza e dispositivi come Yubikeys.
JEP 510: Key Derivation Function API: aiuta gli sviluppatori a prepararsi per gli ambienti di calcolo quantistico, i offrendo un’API per le funzioni di derivazione delle chiavi, che sono algoritmi crittografici per derivare chiavi aggiuntive da una chiave segreta e altri dati. É un elemento di base necessario per supportare a crittografia a chiave pubblica ibrida e aiuterà a rendere agevole l’adozione della crittografia quantistica.
Aggiornamenti delle performance di Oracle JDK 25
JEP 519: Compact Object Headers: aiuta gli sviluppatori ad aumentare la produttività riducendo le dimensioni delle intestazioni degli oggetti a 64 bit su architetture a 64 bit. Ciò migliora la densità di implementazione e aumenta la localizzazione dei dati, riducendo al contempo le dimensioni degli oggetti e l’impronta di memoria su carichi di lavoro realistici.
JEP 514: Ahead-of-Time Command-Line Ergonomics: aiuta gli sviluppatori ad accelerare la produttività semplificando la creazione di cache ahead-of-time senza perdita di espressività. Ciò accelera l’avvio delle applicazioni Java semplificando i comandi necessari per i casi d’uso più comuni.
JEP 515: Ahead-of-Time Method Profiling: aiuta gli sviluppatori ad aumentare la produttività aumentando le performance delle applicazioni. Il tempo di riscaldamento viene migliorato, spostando la raccolta dei profili di esecuzione del metodo iniziale dai cicli di produzione ai cicli di formazione, trasmettendo i profili tramite la cache ahead-of-time. Ciò consente al compilatore just-in-time di generare codice nativo immediatamente all’avvio dell’applicazione anziché attendere la raccolta dei profili. Elimina, inoltre, la necessità di qualsiasi modifica a codice di applicazioni, librerie o framework e rimuove eventuali vincoli all’esecuzione delle applicazioni.
Aggiornamenti per il monitoraggio in Oracle JDK 25
JEP 509: JFR CPU-Time Profiling (sperimentale): aiuta gli sviluppatori a migliorare la produttività e l’efficienza dei loro programmi migliorando JDK Flight Recorder (JFR) per acquisire informazioni di profilazione CPU-time più accurate su Linux e aiutando a identificare gli elementi del programma da ottimizzare.
JEP 518: JFR Cooperative Sampling: aiuta gli sviluppatori ad aumentare l’affidabilità del codice migliorando la stabilità del JFR quando campiona in modo asincrono stack di thread Java. Ciò consente al JFR di ridurre al minimo il bias al punto di sicurezza nei campionatori di eventi, evitando al contempo euristiche rischiose per la generazione di tracce stack al di fuori dei punti di sicurezza. Consente, inoltre, la creazione di richieste di campioni in risposta a un evento hardware o all’interno di un gestore di segnali e riduce la quantità di lavoro che il thread campionatore deve eseguire.
JEP 520: JFR Method Timing & Tracing: aiuta gli sviluppatori ad accelerare la produttività consentendo loro di identificare i colli di bottiglia nelle performance delle applicazioni, di ottimizzare il codice e di trovare le cause principali dei bug. Ciò si ottiene estendendo il JFR con strutture per la temporizzazione del metodo e il tracciamento tramite strumentazione bytecode.
Le funzioni della release Java 25 sono frutto di una collaborazione stretta e continua fra Oracle e altri membri della community globale di sviluppatori Java, tramite OpenJDK e Java Community Process (JCP). Per maggiori dettagli sulle funzioni di Java 25, consulta il blog tecnico su Java 25. Le innovazioni Java provenienti dalla community globale verranno presentate al JavaOne 2026, che si terrà a Redwood Shores, in California, dal 17 al 19 marzo 2026.
Supportare la community Java globale con l’innovazione cloud
Implementare Java su Oracle Cloud Infrastructure (OCI), che è il primo cloud di livello hyperscale a supportare Oracle JDK 25, permette di ottenere livelli superiori di prestazioni ed efficienza, innovazione e risparmio sui costi. Offrendo Oracle Java SE e funzionalità avanzate come il Java SE Subscription Enterprise Performance Pack senza alcun costo aggiuntivo su OCI, Java 25 consente agli sviluppatori di creare e implementare applicazioni che vengono eseguite più velocemente, più efficacemente e con un rapporto prezzo/prestazioni ottimizzato.
L’Oracle Java SE Universal Subscription offre ai clienti un supporto di qualità eccellente. Questa offerta comprende il Java SE Subscription Enterprise Performance Pack, il supporto per tutto il portfolio Java, Java Management Service; inoltre, può essere aggiornata in modo flessibile, in funzione delle esigenze di business dei clienti. Ciò consente ai team IT di gestire la complessità, ridurre i rischi per la sicurezza e contenere i costi.
Oltre ai vantaggi di Java su OCI e di Oracle Java Universal SE Subscription, Java 25 offre migliori prestazioni applicative e una vasta gamma di funzionalità di intelligenza artificiale e sicurezza, tra cui la post-quantum cryptography (PQC), per migliorare le performance, la stabilità e la sicurezza delle implementazioni della piattaforma Java SE e del JDK.
Alcune dichiarazioni
“Entrando nel suo quarto decennio di vita, Java continua a fornire funzionalità per garantire che le applicazioni – comprese quelle alimentate e integrate con l’AI – siano altamente efficienti e scalabili su tutte le piattaforme hardware”, ha dichiarato Arnal Dayaratna, Research Vice President, Software Development di IDC. “Oracle continua a gestire la tecnologia Java con l’obiettivo di favorire l’evoluzione del linguaggio e della piattaforma di programmazione, in particolare in relazione all’intelligenza artificiale e alla sicurezza. Il rilascio di nuove release ogni sei mesi, a cadenza costante, è pensato per accelerare ulteriormente l’innovazione. Di conseguenza, Java riesce ad offrire un flusso continuo di funzionalità moderne per lo sviluppo di applicazioni di nuova generazione, basate sull’intelligenza artificiale“.
“Java ha raggiunto un traguardo significativo quest’anno con il suo 30° anniversario. La piattaforma e il linguaggio continuano a evolversi per aiutare gli sviluppatori a creare rapidamente e facilmente applicazioni arricchite con funzionalità innovative di intelligenza artificiale e sicurezza“, ha dichiarato Georges Saab, Senior Vice President, Oracle Java Platform e Chair, OpenJDK governance board. “Java 25 è riprova della costanza con cui Oracle investe per offrire funzionalità che servono per sviluppare soluzioni AI e semplificano il linguaggio, per facilitare l’apprendimento di Java da parte dei nuovi sviluppatori e dei team IT“.