Java 9 (o più precisamente JDK 9), la major release attualmente in fase di sviluppo di uno dei più noti e utilizzati linguaggi per la programmazione e lo sviluppo, è ora ufficialmente "feature complete" e presenta quindi tutte le funzionalità che dovrebbero essere incluse nella versione definitiva di questo ramo. Ora il progetto è giunto in fase di bug fixing e l'attenzione degli sviluppatori sarà concentrata in particolare sull'individuazione di malfunzionamenti ed eventuali vulnerabilità per procedere con le opportune correzioni.
Non tutte le le feature promesse dai developer e attese dalla community sono state completate in tempo per la deadline inizialmente definita, tra di esse è possibile citare per esempio il client HTTP/2, concepito anche per l'implementazione di WebSocket e per sostituire l'APi legacy HttpURLConnection; tale funzionalità ha quindi subito un downgrade ed è stata classificata come feature in fase di incubazione.
Il declassamento del client HTTP/2 a livello di modulo in incubazione per Java 9 presenta alcune implicazioni tra cui la mancata risoluzione di default in compilazione o runtime e la certezza che l'API non farà parte di Java SE (Standard Edition). Più semplicemente, questo significa che anche se verrà incluso in Java 9, esso non sarà in ogni caso accessibile in modalità predefinita e sarà pacchettizzato tramite un modulo associato al namespace jdk.incubtor.
Per quanto riguarda gli sviluppatori, quelli che vorranno sfruttare comunque il client HTTP/2 dovranno utilizzare esplicitamente il flag --add-mod; si tenga comunque conto che non trattandosi di una feature che fa parte dell'API standard essa potrà subire delle modifiche in qualsiasi momento. Un vero peccato considerando che la URLConnection API supporta diversi protocolli molti dei quali ormai non in uso, presenta diversi comportamenti non documentati e lavora unicamente in modalità blocking prevedendo, ad esempio, un thread per ciascuna dinamica request/response.
Al di là delle assenze eccellenti, la road map di Java/JDK 9 prevede ora un lavoro di revisione del codice che, a meno di imprevisti, porterà in progetto alla fase di general availability entro il prossimo luglio.
Via Mark Reinhold