Risultato di una stretta collaborazione tra Oracle e la community globale degli sviluppatori, Java 20 è ora disponibile. La nuova release del linguaggio di programmazione, tra le altre cose, è supportata da Java Management Service. Si tratta del servizio nativo OCI (Oracle Cloud Infrastructure) strutturato in modo da offrire un unico pannello di controllo per aiutare le organizzazioni a gestire runtime e applicazioni Java on-premise o in qualsiasi cloud.
Oracle rilascia Java 20 con migliaia di miglioramenti
Il gruppo cita migliaia di miglioramenti che interessano aspetti come prestazioni, stabilità e sicurezza. La presentazione ufficiale coincide con il Java Developer organizzato nella cornice dell’evento Oracle DevLive Level Up in scena dal 20 al 23 marzo Redwood Shores, in California. Queste le parole di Georges Saab (Senior Vice President of Development, Java Platform e Chair, OpenJDK Governing Board, Oracle).
Per oltre 25 anni, Java ha permesso agli sviluppatori di progettare e costruire nuove generazioni di applicazioni solide, scalabili e sicure. I nuovi e innovativi miglioramenti di Java 20 riflettono la visione e l’impegno profuso dalla community globale di Java durante tutta la sua esistenza. Grazie al supporto fornito dalla leadership tecnologica Java di Oracle e dalla gestione della community, Java è diventato estremamente importante come linguaggio e piattaforma che aiuta gli sviluppatori a aumentare la loro produttività.
Qui sopra la roadmap stabilita da Oracle con il rilascio di una versione su base semestrale (la 19 risale al settembre 2022). I passi in avanti mirano a semplificare notevolmente il processo di scrittura, manutenzione e osservazione di applicazioni concomitanti a throughput elevato.
Le novità di Java 20
Direttamente dal comunicato stampa giunto in redazione, riportiamo le principali novità introdotte da Oracle con il rilascio di Java 20.
Aggiornamenti e miglioramenti al linguaggio
- JEP 432: Record Patterns (seconda anteprima): Migliora il linguaggio Java consentendo agli utenti di aggiungere pattern di registro e pattern di tipo e creare così una tipologia di navigazione ed elaborazione dati potente, dichiarativa e componibile. Ciò aiuta ad aumentare la produttività degli sviluppatori permettendo loro di estendere il pattern matching per consentire query di dati più sofisticate e componibili.
- JEP 433: Pattern Matching for Switch (quarta anteprima): Estendendo il pattern matching alle istruzioni switch, le espressioni possono essere testate rispetto a vari pattern, ciascuno con un’azione specifica, e l’espressione di query complesse basate sui dati può avvenire in modo conciso e sicuro. Ampliare l’espressività e l’applicabilità delle espressioni e delle istruzioni switch aiuta ad aumentare la produttività degli sviluppatori.
Funzioni di anteprima/incubatrici Project Loom
- JEP 429: Scoped Values (incubatrice): Permette la condivisione di dati immutabili all’interno di thread e fra thread, preferibili rispetto a variabili thread-local soprattutto quando si utilizza un numero elevato di thread virtuali. Ciò aumenta la facilità d’uso, la comprensibilità, la robustezza e le prestazioni.
- JEP 436: Virtual Threads (seconda anteprima): Semplifica notevolmente il processo di scrittura, manutenzione e osservazione di applicazioni concomitanti a throughput elevato introducendo thread virtuali leggeri nella Java Platform. Consentendo agli sviluppatori di risolvere facilmente i problemi, di eseguire il debugging, e di profilare delle applicazioni concomitanti con gli strumenti e le tecniche JDK esistenti, i thread virtuali aiutano ad accelerare lo sviluppo delle applicazioni.
- JEP 437: Structured Concurrency (seconda incubatrice): Semplifica la programmazione multithreaded trattando vari task in esecuzione in thread diversi come un’unica unità di lavoro. Questo aiuta i team di sviluppo a semplificare la gestione e la risoluzione degli errori, ad aumentare l’affidabilità e a migliorare l’osservabilità.
Funzioni di anteprima Project Panama
- JEP 434: Foreign Function & Memory API (seconda anteprima): Permette ai programmi Java di interagire con codice e dati al di fuori del runtime Java. Richiamando in modo efficiente funzioni straniere (cioè, codici al di fuori di Java Virtual Machine [JVM]) e accedendo in tutta sicurezza a una memoria straniera (cioè, una memoria non gestita da JVM). Questa funzione permette ai programmi Java di chiamare librerie native ed elaborare dati nativi senza aver bisogno di una Java Native Interface. Ciò migliora la facilità d’uso, le prestazioni e la sicurezza.
- JEP 438: Vector API (quinta incubatrice): Esprime calcoli vettoriali che si compilano in modo affidabile in fase di esecuzione per istruzioni vettoriali su architetture CPU supportate. Ciò aumenta le prestazioni rispetto ai calcoli scalari equivalenti.