JDK 10: Novità di Java 10

JDK 10, un'implementazione di Java Standard Edition 10, è stato rilasciato il 20 marzo 2018. I miglioramenti chiave includono tipi di variabili locali, nonché miglioramenti per la raccolta e la compilazione dei rifiuti.

JDK 10 dovrebbe essere solo un rilascio a breve termine e gli aggiornamenti pubblici per JDK 10 dovrebbero terminare tra sei mesi. L'imminente JDK 11, previsto per settembre, sarà una versione con supporto a lungo termine (LTS) di Java. I rilasci di LTS sono previsti ogni tre anni.

Oracle ha stabilito una cadenza di rilascio di sei mesi per le versioni Java. C'erano stati piani per nominare questo aggiornamento e i successori in base all'anno e al mese del rilascio, con il primo rilascio che si sarebbe chiamato Java 18.3. Ma quei piani sono stati demoliti dopo che sono state sollevate obiezioni.

Dove scaricare Java JDK 10

Puoi scaricare JDK 10 dal sito Web di Oracle.

Funzionalità nuove e migliorate in JDK 10

Le caratteristiche principali di JDK 10 includono:

  • Inferenza del tipo di variabile locale, per migliorare il linguaggio Java per estendere l'inferenza del tipo alle dichiarazioni di variabili locali con inizializzatori.
  • Garbage collection completa parallela per il garbage collector G1, per migliorare le latenze nel caso peggiore.
  • Condivisione dei dati della classe dell'applicazione per ottimizzare il tempo di avvio e l'ingombro. La funzionalità di condivisione dei dati di classe esistente è stata estesa in modo che le classi dell'applicazione possano essere inserite nell'archivio condiviso.
  • Un compilatore just-in-time sperimentale, Graal, può essere utilizzato sulla piattaforma Linux / x64.
  • Consapevolezza Docker. Quando è in esecuzione su sistemi Linux, la Java Virtual Machine (JVM) saprà se è in esecuzione in un contenitore Docker. Le informazioni specifiche del contenitore, ovvero il numero di CPU e la memoria totale allocata al contenitore, verranno estratte dalla JVM anziché interrogare il sistema operativo. (Il numero di CPU disponibili per il processo Java viene calcolato da set, condivisioni o quote di processori specificati.)
  • Tre nuove opzioni JVM, per offrire agli utenti di container Docker un maggiore controllo sulla memoria di sistema.
  • Una correzione di bug per correggere il meccanismo di collegamento durante il tentativo di collegamento da un processo host a un processo Java che si trova in un contenitore Docker.
  • Tempi di avvio più brevi per lo strumento jShell REPL, in particolare quando è in uso un file di avvio con molti frammenti.
  • Nuove API per abilitare meglio la creazione di raccolte non modificabili. Il copyOf, Set.copyOf, e Map.copyOfmetodi di creare nuove istanze di raccolta da istanze esistenti. Nuovi metodi toUnmodifiableList, toUnmodifiableSete toUnmodifiableMapsono stati aggiunti alla Collectorsclasse nel pacchetto Stream, consentendo agli elementi di un flusso di essere raccolti in una raccolta non modificabile.
  • Un'inferenza del tipo di variabile locale, per migliorare il linguaggio per estendere l'inferenza del tipo alle variabili locali. L'intento è ridurre la "cerimonia" associata alla codifica pur mantenendo un impegno per la sicurezza dei tipi statici.
  • Un'interfaccia del Garbage Collector pulita per migliorare l'isolamento del codice sorgente di diversi Garbage Collector. Gli obiettivi di questo sforzo includono una migliore modularità per il codice interno di garbage collection nella macchina virtuale HotSpot e la semplificazione dell'aggiunta di un nuovo garbage collector a HotSpot.
  • Garbage collection completa parallela per il garbage collector G1. L'intento è migliorare le latenze nel caso peggiore implementando il parallelismo.
  • Abilitazione di HotSpot per allocare l'heap di oggetti su un dispositivo di memoria alternativo, come un modulo di memoria NVDIMM, specificato dall'utente. Questa caratteristica prevede che i sistemi futuri possano avere architetture di memoria eterogenee.
  • Abilitazione del compilatore just-in-time Grall basato su Java da utilizzare in modo sperimentale sulla piattaforma Linux / x64.
  • Consolidamento dei repository della foresta JDK in un unico repository, per semplificare lo sviluppo. La base del codice fino ad ora è stata suddivisa in più repository, il che può causare problemi con la gestione del codice sorgente.
  • Condivisione dei dati di classe dell'applicazione, per ridurre l'ingombro condividendo metadati di classe comuni tra i processi. Anche il tempo di avvio è migliorato.
  • Handshake locali del thread, per eseguire un callback sui thread senza eseguire un safepoint globale della VM. I singoli thread potrebbero essere interrotti invece di tutti i thread o nessun thread.
  • Fornitura di un set predefinito di certificati dell'autorità di certificazione radice nel JDK. L'obiettivo è quello di aprire i certificati root nel programma Java SE Root CA di Oracle per rendere le build OpenJDK più allettanti per gli sviluppatori.

La roadmap Java a lungo termine

Ecco ciò che Oracle ha detto è in esame per le versioni successive e successive di Java SE:

  • The Amber Project, che è stato un incubatore di funzionalità linguistiche più piccole e orientate alla produttività che includono inferenza di tipo variabile locale, per diminuire la cerimonia associata alla scrittura di codice Java; enumerazioni potenziate, per migliorare l'espressività del costrutto enum consentendo le variabili di tipo nelle enumerazioni ed eseguendo un controllo del tipo più nitido per le costanti enum; e lambda avanzi, per aumentare l'usabilità di lambda e riferimenti al metodo.
  • Progetto Panama, per interconnettere JVM e codice nativo, con chiamate di funzioni native dalla JVM e accesso ai dati nativi dalla JVM.
  • Valhalla, un progetto incubatore per Java VM avanzato e candidati a funzionalità di linguaggio inclusi tipi di valore e specializzazione generica.
  • Project Loom, per ridurre la complessità nella scrittura di applicazioni simultanee. Il piano richiede l'aggiunta di implementazioni di thread alternative in modalità utente, continuazioni delimitate e altri costrutti che implicano la manipolazione dello stack di chiamate. L'obiettivo principale di questa proposta è offrire un'implementazione alternativa dei thread, gestita da scheduler scritti in Java. Il modello di programmazione Java dei normali thread Java verrebbe preservato mentre le prestazioni vengono migliorate e l'impronta ridotta.

Con il nuovo programma di rilascio di sei mesi, le funzionalità che mancano di una versione potrebbero subire un ritardo di appena sei mesi, quando uscirà la versione successiva. Al di là di quanto annunciato per JDK 10, Oracle non si è impegnata a quando nessuna delle nuove funzionalità proposte sarà effettivamente resa disponibile in Java.