Jlink (Java Linker) es una herramienta Java de línea de comandos que me permite crear JREs personalizados (que bien me hubiera venido esto en mi época de desarrollos embebidos).

Hasta ahora hasta para ejecutar el programa Java más básico necesitaba en el equipo destino el JRE (188 MB en mi Java8)

Con esta nueva funcionalidad puedo empaquetar un JRE con sólo lo necesario, eso sí para poder hacerlo tengo que empaquetar mi funcionalidad como un módulo!!!

Veamos cómo hacerlo:

CREACIÓN DEL MÓDULO:

Primero creo mi clase HelloWorld:

Que dejaré en la carpeta src/com/example/

Luego creo el módulo, para eso en la carpeta src/com.example/ (por convención se usa este directorio) creo el fichero java-module.-info.java que tendrá simplemente:

Ya puedo compilar mi módulo con:

javac -d mods/com.example src/com.example/module-info.java src/com/example/HelloWorld.java

esto me ha generado una carpeta mods con:

com.example/module-info.class

com.example/com/example/HelloWorld.class

EJECUCIÓN DEL MÓDULO:

Desde el raíz puedo ejecutar mi modulo con:

java –module-path mods -m com.example/com.example.HelloWorld

EMPAQUETADO DEL JRE

Ahora ya puedo empaquetar mi jre, para eso desde %JDK_9%/jmods copio el java.base.mod a mi carpeta mods:

Y ejecuto:

jlink –module-path mods –add-modules com.example,java.base –output myjre

que me crea la carpeta:

Finalmente desde este JRE/bin puedo ejecutar mi módulo

.java -m com.example/com.example.HelloWorld

¿Sencillo? Pues la verdad es que no…pero automatizándolo con Maven o Graddle el sufrimiento es mucho menor 😀

[Category Java, Tutorial)