JDK 14: le nuove funzionalità di Java 14

Java Development Kit (JDK) 14 ha raggiunto GA, arrivando in una versione a disponibilità generale per le distribuzioni di produzione. L'aggiornamento a Java standard include nuove funzionalità come lo streaming di eventi del registratore di volo JDK, la corrispondenza dei modelli e le espressioni di commutazione. 

JDK 14 è una versione di funzionalità di Java, piuttosto che una versione di supporto a lungo termine (LTS), dopo la cadenza di rilascio di sei mesi impostata per Java. JDK 14 riceverà aggiornamenti di sicurezza ad aprile e luglio prima di essere sostituito da JDK 15, anch'esso una versione non LTS, prevista per settembre. L'attuale versione di LTS è JDK 11. 

Le nuove funzionalità e miglioramenti in JDK 14 includono:

  • JFR Event Streaming fornisce un'API per il consumo continuo di dati JFR da applicazioni in-process e out-of-process. JFR è uno strumento per raccogliere dati di profilazione e diagnostica su un'applicazione Java e JVM mentre sono in esecuzione. La proposta di streaming di eventi registra la stessa serie di eventi del caso non di streaming, con un overhead inferiore all'1%, se possibile. Lo streaming degli eventi deve coesistere con le registrazioni non in streaming, sia basate su disco che basate sulla memoria. Motivare questa proposta è una situazione in cui la VM HotSpot emette più di 500 punti dati utilizzando JFR, la maggior parte dei quali disponibili solo analizzando i file di registro. Attualmente, un utente deve avviare una registrazione, interromperla, scaricare il contenuto su disco e quindi analizzare il file di registrazione. Funziona bene per la profilazione delle applicazioni, ma non per scopi di monitoraggio.Un esempio di monitoraggio dell'utilizzo è un dashboard che visualizza gli aggiornamenti dinamici ai dati. La creazione di una registrazione comporta un sovraccarico, come la copia dei dati dal repository su disco a un file di registrazione separato. Se ci fosse un modo per leggere i dati registrati dal repository su disco senza creare un nuovo file di registrazione, gran parte del sovraccarico potrebbe essere evitato.
  • Il miglioramento pianificato  NullPointerExceptionsriguarda il miglioramento dell'usabilità delle eccezioni generate dalla JVM descrivendo esattamente quale variabile era nulla. Gli autori della proposta stanno cercando di fornire informazioni utili agli sviluppatori e al personale di supporto sulla cessazione prematura di un programma e migliorare la comprensione del programma associando più chiaramente un'eccezione dinamica al codice statico del programma. Uno degli obiettivi è ridurre la confusione e le preoccupazioni degli sviluppatori NullPointerExceptions.
  • I buffer di byte mappati non volatili aggiungono nuove modalità di mappatura dei file specifiche di JDK che consentono di utilizzare l'API FileChannel per creare MappedByteBufferistanze che fanno riferimento alla memoria non volatile (NVM). NVM consente ai programmatori di creare e aggiornare lo stato del programma attraverso le esecuzioni del programma senza sostenere i costi significativi di copia o traduzione che normalmente richiedono le operazioni di input e output. Ciò è particolarmente significativo per i programmi transazionali. Pertanto, l'obiettivo principale di questa proposta di miglioramento di JDK è garantire che i client possano accedere e aggiornare NVM da un programma Java in modo coerente ed efficiente. Un obiettivo secondario è implementare questo comportamento di commit utilizzando un'API interna a JDK limitata definita nella classe Unsafe, in modo che possa essere riutilizzata da classi diverse daMappedByteBufferpotrebbe essere necessario impegnarsi in NVM. Un altro obiettivo è consentire ai buffer mappati su NVM di essere tracciati dalle API esistenti per il monitoraggio e la gestione. Le piattaforme OS / CPU di destinazione includono Linux / x64 e Linux / AArch64.
  • Le espressioni di commutazione semplificano la codifica estendendole in  switchmodo che possano essere utilizzate come un'istruzione o un'espressione. Ci si aspetta che le espressioni di commutazione siano una funzionalità permanente in JDK 14, dopo essere state visualizzate in anteprima sia in JDK 12 che in JDK 13. Le espressioni di commutazione si preparano anche per l'uso della corrispondenza dei modelli in switch. La corrispondenza dei modelli consente agli sviluppatori di estrarre in modo condizionale i componenti dagli oggetti in modo più conciso e sicuro. 
  • Allocazione di memoria compatibile con NUMA per il Garbage Collector G1, destinata a migliorare le prestazioni G1 su macchine di grandi dimensioni. 
  • Rimozione del Garbage Collector CMS (Concurrent Mark Sweep), che in precedenza era obsoleto e si prevedeva di essere rimosso. I successori di CMS sono sorti tra cui ZGC e Shenandoah. 
  • Porting di ZGC su MacOS. Finora è stato supportato solo su Linux.
  • Rimozione degli strumenti pack200 e unpack200 e dell'API Pack200 nel java.util.jarpacchetto. Questi sono stati tutti deprecati in Java SE 11 con l'intento di rimuoverli in futuro. Pack200 è uno schema di compressione per i file JAR.
  • Record, che fornirebbe una sintassi compatta per dichiarare classi che sono contenitori trasparenti per dati poco modificabili. I record semplificano la creazione di classi che sono essenzialmente supporti di dati senza dover scrivere un sacco di boilerplate. La proposta afferma che dovrebbe essere facile e conciso dichiarare aggregati di dati nominali superficialmente immutabili, ben educati.
  • Uno strumento di packaging, in una fase di sviluppo incubatore, per il packaging di applicazioni Java autonome. Lo strumento sarebbe basato su JavaFX javapackager. Tale strumento era stato incluso in Java ma è stato tagliato da JDK 11 come parte della rimozione di JavaFX.
  • Migliora la lingua con la corrispondenza dei modelli per l' instanceof operatore. Questa sarebbe una funzionalità di anteprima in JDK 14. Il pattern matching consente alla logica comune in un programma, principalmente l'estrazione condizionale di componenti dagli oggetti, di essere espressa in modo più conciso e sicuro. Il codice può essere breve e indipendente dai tipi.
  • Una seconda anteprima dei blocchi di testo, una stringa letterale multilinea che evita la necessità della maggior parte delle sequenze di escape e formatta automaticamente la stringa in modo prevedibile. I blocchi di testo darebbero allo sviluppatore il controllo sul formato quando lo desidera, semplificheranno la scrittura di programmi Java e miglioreranno la leggibilità delle stringhe. I blocchi di testo erano visualizzati in anteprima in JDK 13; l'iterazione JDK 14 aggiungerebbe sequenze di escape per la gestione di spazi bianchi espliciti e controllo di nuova riga.
  • Deprecando la combinazione degli algoritmi di Garbage Collection di Parallel Scavenge e Serial Old. I manutentori Java ritengono che questa combinazione venga utilizzata molto poco ma richieda molta manutenzione.
  • Porting di ZGC (Z Garbage Collector) su Windows. Questa funzione è stata nuovamente spostata nell'elenco ufficialmente mirato, dopo essere stata ripristinata nell'elenco proposto per il targeting.
  • API di accesso alla memoria esterna, con l'introduzione di un'API per programmi Java per accedere in modo sicuro ed efficiente alla memoria esterna al di fuori dell'heap Java. Questa API dovrebbe servire come alternativa alle principali vie attraverso le quali i programmi Java accedono alla memoria, inclusi nio.ByteBuffere sun.misc.Unsafe. La nuova API dovrebbe essere in grado di operare su vari tipi di memoria tra cui memoria nativa, persistente e heap gestito. Non dovrebbe essere possibile per l'API compromettere la sicurezza della JVM. La deallocazione della memoria dovrebbe essere esplicita nel codice sorgente. L'API dovrebbe aiutare nello sviluppo del supporto di interoperabilità nativo che è l'obiettivo del Progetto Panama.
  • Deprecazione dei port Solaris / Sparc, Solaris / x64 e Linux / Sparc, con l'intento di rimuoverli in una versione futura. L'abbandono del supporto per queste porte consentirà ai contributori di OpenJDK di accelerare lo sviluppo di nuove funzionalità. Sebbene Solaris e Sparc fossero tecnologie cardine di Sun Microsystems, il creatore originale di Java, negli ultimi anni sono stati sostituiti nello spazio tecnologico dal sistema operativo Linux e dai processori Intel.

Dove scaricare JDK 14

Puoi scaricare JDK 14 open source da jdk.java.net per Linux, Windows e macOS. È possibile scaricare i download commerciali di Oracle Java SE 14 da Oracle.com.