Se la roadmap programmata dagli sviluppatori del progetto dovesse essere rispettata, JDK 9 sarà pronto per la fase di General Availability entro il 21 settembre 2017. Attualmente l'aggiornamento è accessibile sotto forma di una Final Release Candidate che permette di testare le novità del rilascio, analizziamone quindi le principali con la promessa di futuri approfondimenti dedicati alle singole feature di Java 9.
Cominciamo con l'introdurre quella che è probabilmente l'implementazione più rilevante di questa nuova milestone, il supporto per la programmazione modulare tramite JPMS (Java Platform Module System). Esito del progetto "Jigsaw", la modularità prevede un meccanismo per la dichiarazione delle dipendenze sia in compilazione che a runtime, in questo modo il sistema potrà gestire queste ultime stabilendo di volta in volta quali moduli siano necessari o meno per un'App.
Con la modularità viene superata la precedente impostazione monolitica della Java Platform, architettura che prevedeva di gestire numerosi package con conseguenze negative per l'aggiornamento e la manutenzione. Java 9 prevede invece poco meno di un centinaio di moduli tra cui scegliere per personalizzare le runtime. Ciascun modulo ha un nome specifico ed è rappresentato da package Java e risorse correlate; dato l'alto livello di incapsulamento, un modulo deve dichiarare in modo esplicito i package da rendere disponibili per altri moduli.
Interessante anche l'introduzione di un REPL (Read-Evaluate-Print Loop) tramite JShell; quest'ultima fornisce una CLI (Command Line Interface) con cui testare componenti sintattiche come classi e metodi. Si potrà per esempio evitare la scrittura di una classe ai fini di test digitando direttamente le istruzioni previste via JShell.
Da segnalare anche il lavoro effettuato per il miglioramento delle API, a cominciare da quelle per l'interazione con i processi di sistema. Si potranno dichiarare metodi privati all'interno delle interfacce e sono stati introdotti alcuni nuovi metodi all'interfaccia java.util.Stream, inoltre, risulta particolarmente utile la classe MultiResolutionImage
che incapsula più immagini dalla risoluzione differente permettendo selezioni basate sulle dimensioni.
In Java 9 troviamo anche il supporto a HTTP/2 (package java.net.http), al protocollo DTLS (Datagram Transport Layer Security) e al Reactive Programming tramite le Reactive Streams API, delle interfacce che forniscono un framework per l'implementazione di applicazioni asincrone.
Via JDK 9