Java 9: recensione a cura di Valerio Radice, docente Java in Nextre

Il linguaggio di programmazione Java è stato aggiornato alla versione 9. Per poter capire al meglio le nuove funzionalità, abbiamo chiesto a Valerio Radice, docente Java presso l’Academy Nextre, di parlarci di questa nuova versione e illustrarci i pro e contro del linguaggio e del manuale scritto da Claudio De Sio Cesari. Ora la parola spetterà a Valerio che ci illustrerà al meglio i segreti di Java 9.

Ciao Valerio, cos’è Java e qual è stata la sua evoluzione

Java è uno dei linguaggi di programmazione più diffusi in molti ambiti dello sviluppo di applicativi e servizi. Dagli anni ’90 ad oggi ha goduto di una grande evoluzione. I più grandi cambiamenti sono avvenuti con l’introduzione della versione 1.5 e, in particolare, grazie ai tipi generici che hanno rivoluzionato la struttura di alcune librerie rendendole dinamiche. Da allora, Java è migliorato sempre di più, fino alla versione 8 in cui è stato introdotto l’uso delle espressioni lambda – un modo di programmare tipico della programmazione funzionale, prerogativa di altri linguaggi più specifici – ovvero una programmazione in cui non vai ad agire sui dati ma provi ad elaborarli. L’idea è quella di ottenere nuovi dati a partire da elaborazioni precedenti. Altre novità introdotte nella versione 8 riguardano un nuovo supporto alla gestione del tempo e delle date. Mi riferisco all’introduzione delle librerie “Joda Time”, tra cui la definizione delle nuove classi immutabili LocalDate e LocalDateTime.

E ora è arrivato Java 9. Com’è cambiato Java in questa nuova versione?

Java 9 da un lato potrebbe essere visto come una continua evoluzione di Java 8. Non stravolge la metodologia di sviluppo ma in realtà porta con sé nuovi paradigmi architetturali in grado di ribaltare il design di un’applicazione, nel modo in cui la si concepisce.

Un aspetto interessante è il fatto che Java 9 offra completa retro-compatibilità a tutte le versioni precedenti di Java. Tra le novità risulta interessante l’introduzione dei moduli in grado di garantire una forte incapsulazione. Il beneficio di usare i moduli risiede principalmente in una maggior sicurezza delle informazioni, in quanto non si può modificare in alcun modo il codice già presente in un modulo di terze parti. Ad esempio, prendo un modulo presente nella rete, lo carico all’interno del mio programma e, in questo modo, ho la garanzia che l’operazione generata dallo stesso si può utilizzare così com’è senza modificarla.

 

L’idea alla base è quella di non sapere come il modulo riesca a lavorare al suo interno ma di conoscere soltanto il risultato dell’operazione. Un’altra novità è rappresentata da un nuovo sistema per la verifica e gestione delle dipendenze dei moduli rendendo più solido il processo di compilazione. Questo controllo permette di aumentare la robustezza dell’applicativo. È bene ricordare che è sempre meglio avere un errore in fase di compilazione che in fase di esecuzione.

Tra le altre novità introdotte in Java 9 riportiamo la JShell – di cui parleremo anche in seguito -, il supporto alla versione 8 di Unicode, l’uso di variabili final all’interno di un blocco try-catch with-resources, la possibilità di introdurre metodi privati all’interno delle interfacce, statici e non, il miglioramento della libreria Joda-Time con l’aggiunta di metodi per la formattazione di durata e tempi, l’introduzione della nuova modalità di gestione delle stringhe (Compact-String) e l’annotazione @Deprecated.

Per quanto riguarda la JShell, essa rappresenta una nuova console per lo sviluppatore. Permette a quest’ultimo di provare il codice senza dilungarsi in operazioni non necessarie come la creazione di progetti vuoti per testare il code che si trova in rete. L’uso di Jshell risulta semplice e veloce: ci sono pochi comandi chiari che permettono di eseguire operazioni semplici. JShell permette anche l’apertura di una finestra di modifica per editare rapidamente gli script di codice che si vogliono provare. Ogni comando eseguito al suo interno è tracciato in modo tale da poter ricreare tutta la storia di quello che si è provato in precedenza. Le prove effettuate nella JShell possono essere in qualunque momento salvate e ricaricate. L’altra novità importante è rappresentata dal cambiamento della filosofia di rilascio degli aggiornamenti di Java. In pratica verrà rilasciata una nuova versione ogni 6 mesi.

Il manuale di Java 9 di Claudio de Sio Cesari

manuale java 9 recensioneQuesto è un ottimo libro per chi si imbatte per la prima volta con il linguaggio Java ma, per chi ha più esperienza nella programmazione, risulterà abbastanza tedioso. I concetti sono espressi in maniera molto semplice e vengono di tanto in tanto arricchiti con qualche esempio contestualizzato. È un libro progressivo, nel senso che introduce un elemento per volta a partire dalla sintassi passando per i concetti della programmazione orientata agli oggetti, alle strutture dati e fino alle ultime novità che caratterizzano Java 9. Le novità di Java 9 sono chiaramente evidenziate da un’icona apposita – un simbolino J9 che ti accompagna durante la lettura -. Rispetto alla versione precedente, redatta dallo stesso autore, questo libro si arricchisce con concetti chiave sui moduli e sulla JShell, perdendo però i capitoli inerenti alla Java Persistence API (connessione con le basi di dati) e il capitolo sulla libreria grafica JavaFX. Mi trovo in accordo con l’autore sulla rimozione del capitolo su Java FX in quanto il trend di programmazione orientata al cloud l’ha resa inutile e superflua. Trovo invece una grave mancanza la rimozione del capitolo che trattava la Java Persistence API, per il quale ne consiglio la lettura sul vecchio manuale. Per una lettura più approfondita il libro è correlato da una serie di appendici scaricabili separatamente.

 

Come valuti quindi, in complessivo, questa nuova versione di Java?

Sicuramente si tratta di un passo avanti rispetto a Java 8 a favore della sicurezza e della portabilità degli applicativi. Come per tutte le novità ci vorrà del tempo affinché la filosofia di design a moduli possa essere recepita dagli sviluppatori, soprattutto per quelli di vecchia data, ancora ancorati alle precedenti modalità di sviluppo. Non ci resta che attendere una naturale evoluzione dei framework leader di mercato per introdurre a pieno regime lo sviluppo a moduli. Trovo invece molto pratica la nuova JShell che permette di testare con molta rapidità piccole parti di codice, senza dover creare ogni volta un nuovo progetto. Java 9 è un linguaggio di programmazione molto valido e che si è messo al pari dei concorrenti.

Grazie mille Valerio per questa recensione su Java 9 e sul manuale inerente al linguaggio di programmazione. Ricordiamo agli utenti che, nella nostra sezione guide, è presente un manuale creato con lo scopo di aiutare l’utente a prendere la certificazione Java OCA.