Java 9, programmazione modulare e JShell

18 settembre 2017

In attesa del rilascio della prima versione stabile di Java 9 previsto per il 21 settembre andiamo a presentare le nuove caratteristiche introdotte dalla piattaforma.

Programmazione modulare

Tra i diversi ed interessanti cambiamenti, evidenziamo l’introduzione della programmazione modulare attraverso il Java Platform Module System (JPMS), risultato del progetto “Jigsaw”, e della JShell per il testing e l’esplorazione rapida delle funzionalità del linguaggio.

La modularità prevede un meccanismo per la dichiarazione della dipendenza dei moduli individuabile sia a compilation time che a runtime, in modo tale che il sistema sia in grado di muoversi all’interno delle dipendenze per determinare i moduli di cui un’applicazione ha bisogno.

Con la modularità in Java 9 abbiamo un forte incapsulamento, i packages all’interno di un modulo sono accessibili ad altri moduli soltanto se il modulo li esporta esplicitamente. Essa introduce inoltre maggiore scalabilità.

In precedenza la piattaforma Java consisteva in un blocco monolitico e in un gran numero di packages difficili da mantenere e aggiornare, il sistema è adesso modularizzato in 95 moduli ed è possibile creare runtime personalizzabili scegliendo i moduli di cui si ha bisogno.

Un modulo può essere visto come un’aggregazione di alto livello di packages Java relazionati e di risorse di natura diversa come immagini, file XML ecc. Ogni modulo ha un nome univoco, supporta la reflection, può dichiarare dipendenze da altri moduli, deve dichiarare esplicitamente i packages che intende rendere disponibile ad altri moduli, i servizi che offre, ed infine i servizi utilizzati.

La struttura applicativa di un modulo è molto simile ad un normale progetto Java su libreria (JAR), l’aspetto fondamentale è la presenza di un file di configurazione, denominato module-info.java, di cui riportiamo un semplice esempio:

  module it.html.welcome.java9 {
   requires java.base;
  }
 

REPL e JShell

Java 9 introduce il suo REPL (read-evaluate-print loop) attraverso la JShell. La JShell offre un ambiente a riga di comando che consente di esplorare e sperimentare facilmente aspetti del linguaggio come istruzioni, classi, metodi e molto altro.

Ad esempio, invece di scrivere un classe di prova per testare il funzionamento di un blocco di codice che implementa un algoritmo, possiamo digitare ed eseguire direttamente il nostro codice inserendolo nella shell.

Supponiamo di voler testare il funzionamento dell’istruzione System.out.println(), normalmente realizzeremmo una classe di test di questo tipo:

  class MyClass {
   public static void main(String[] args) {
    System.out.println("Hello Java 9!");
   }
  }

La JShell consente di evitare la realizzazione della classe digitando ed eseguendo direttamente l’istruzione:

  jshell>System.out.println("Hello Java 9!")
  Hello Java!
 
  jshell>

Se vuoi aggiornamenti su Java 9, programmazione modulare e JShell inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Java 9, programmazione modulare e JShell

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy