Arriva Java 9: ecco tutto quello che bisogna sapere

Modularità, nuove funzioni per il compilatore, REPL, supporto migliorato a HTTP/2 e altro ancora. Ecco le principali novità di Java 9 e del suo JDK.

java 9

Java 9 è finalmente disponibile e con esso il suo Java Development Kit (JDK) rivolto agli sviluppatori. Si tratta di una versione con molte funzioni nuove, importanti e anche controverse che andiamo ad analizzare in questo speciale.

Dove si scarica il JDK di Java 9?

Trovate tutte le informazioni a questo link.

Quali sono le nuove e più importanti funzioni di Java 9?

Visto il suo debutto ben tre anni dopo Java 8 SE, Java 9 contiene molte novità strutturali, ma anche diversi miglioramenti rispetto all’ultima versione. L’aspetto più importante e innovativo di Java 9 è sicuramente il supporto per la programmazione modulare tramite JPMS (Java Platform Module System) basata sul già noto Project Jigsaw.

La modularità in Java 9 significa essenzialmente un sistema in grado di stabilire di volta in volta quali moduli siano necessari o meno per un’app, rispetto alla precedente impostazione che prevedeva la gestione contemporanea di numerosi pacchetti con conseguenze negative per l’aggiornamento e la manutenzione. In Java 9 invece sono previsti circa un centinaio di moduli con i quali personalizzare le runtime e il loro ingresso nel nuovo JDK avrà come risultato un miglioramento della scalabilità, della sicurezza e delle prestazioni dell’applicazione.

Grazie alla modularità infatti gli sviluppatori potranno costruire e mantenere in modo più rapido ed efficace librerie e grandi applicazioni per Java SE (Standard Edition) e Java EE (Enterprise Edition), sebbene IBM, Red Hat e altri nomi importanti del settore non abbiano digerito la prima versione di questo nuovo sistema rilasciata a maggio e si continui a dibattere se questa novità porterà davvero benefici agli sviluppatori.

Finalmente arriva un REPL

Dopo anni di sviluppo con il nome di Project Kulia, Java 9 guadagna finalmente un REPL (Read-Evaluate-Print Loop) tramite JShell. Questa novità fornisce agli sviluppatori una CLI (Command Line Interface) con cui testare componenti sintattiche.

In questo modo gli sviluppatori possono ottenere un feedback sui programmi prima della compilazione scrivendo alcune linee di codice. Ricordiamo che l’assenza di un REPL era uno dei motivi fino ad oggi per cui molte scuole preferivano a Java linguaggi di programmazione come Python e Scala, proprio perché questi ultimi erano dotati di un REPL.

java 9

Le novità del compilatore Java

Java 9 prevede diverse nuove funzionalità per la compilazione del codice tra cui la compilazione anticipata AoT (Ahead-of-Time). Ancora in fase sperimentale, questa funzionalità consente la compilazione di classi Java nel codice nativo prima che questo sia lanciato nella macchina virtuale. Questa feature è destinata a migliorare il tempo di avvio di piccole e grandi applicazioni, con un impatto limitato sulle prestazioni di picco.

Java 9 offre anche la fase 2 della distribuzione di smart compilation di Oracle. Questa caratteristica comporta un miglioramento della stabilità e della portabilità dello strumento s javac in modo che possa essere utilizzato in JVM (Java Virtual Machine) di default. Lo strumento sarà generalizzato in modo da poter essere utilizzato per progetti di grandi dimensioni al di fuori del JDK. JDK 9 ha inoltre aggiornato il compilatore javac in modo da poter compilare i programmi Java 9 da eseguire su alcune versioni precedenti di Java.

Un’altra funzionalità di compilazione sperimentale è la Java JVM Compiler Interface (JVMCI). Questa interfaccia consente a un compilatore scritto in Java di essere utilizzato come compilatore dinamico da parte del JVM. L’API di JVMCI fornisce meccanismi per accedere alle strutture VM, all’installazione del codice compilato e alla connessione al sistema di compilazione JVM.

Altre novità

Segnaliamo anche il supporto a HTTP/2 (package java.net.http), al protocollo DTLS (Datagram Transport Layer Security) per la sicurezza e al Reactive Programming tramite le Reactive Streams API, interfacce che forniscono un framework per l’implementazione di applicazioni asincrone.

Infine Oracle ha rivelato che Java 9 sarà l’ultimo del suo genere in termini di designazione e tempo trascorso tra le principali versioni. Da qui in poi infatti Java avrà una cadenza di rilascio di sei mesi, con la prossima versione principale, chiamata Java 18.3, attesa a marzo 2018 e seguita da Java 18.9 sei mesi dopo.

La cadenza di rilascio più rapida di Java significa che gli sviluppatori non dovranno aspettare a lungo per le maggiori release. Può anche significare però che gli sviluppatori ignoreranno Java 9 e le sue caratteristiche di modularità ritenute da alcuni ancora immature e attenderanno sei mesi per la nuova versione.