In Java 9 è stato introdotto un nuovo strumento, chiamato jlink, che consente la creazione di immagini di runtime modulari. Queste immagini di runtime non sono altro che una raccolta di un insieme di moduli e delle loro dipendenze. Una proposta di miglioramento Java, JEP 220, governa la struttura di questa immagine di runtime.
Lo strumento JLink è progettato per fornire fasi opzionali tra il tempo di compilazione e il runtime, chiamate link time, che collega un insieme di moduli e le sue dipendenze transitive per creare immagini di runtime. JLink semplifica la distribuzione e riduce anche le dimensioni di un'applicazione.
La sintassi di chiamata di jLink è la seguente:
jlink --module-path [modulepath] --add-modules [modules] --limit-modules [modules] --output [path]
Qui,
–percorso-modulo – jLink usa il percorso del modulo per trovare moduli come jar modulari, file JMOD
–add-modules – Menzione modulo che deve includere nel set predefinito di moduli per l'immagine runtime, per impostazione predefinita set di moduli vuoto.
–limit-modules – Usa questa opzione per limitare i moduli necessari per la nostra applicazione.
–output – L'immagine di runtime finale risultante verrà archiviata nella directory di output
–help – elenca i dettagli sulle opzioni di jLink
–versione – mostra il numero di versione
Se ricevi l'errore seguente durante l'esecuzione del comando jlink:
jlink: command not found
puoi installare il pacchetto seguente secondo la tua scelta di distribuzione.
Distribuzione | Comando |
---|---|
Debian | apt-get install openjdk-12-jdk-headless |
Ubuntu | apt-get install openjdk-9-jdk-headless |
Arch Linux | pacman -S jdk10-openjdk |
Kali Linux | apt-get install openjdk-11-jdk-headless |
Fedora | dnf install java-9-openjdk-devel-debug-1 |
Raspbian | apt-get install openjdk-9-jdk-headless |
Conclusione
Un nuovo strumento in JDK 9 è il comando jlink, il linker di Java per la creazione di immagini di runtime personalizzate. Puoi includere solo ciò che è necessario per una determinata app o un set di app da eseguire in un runtime personalizzato. Ad esempio, se stai creando un runtime per un dispositivo che non supporta le GUI, puoi creare un runtime senza i moduli corrispondenti che supportano Swing e JavaFX.