En Java 9 se introdujo una nueva herramienta, llamada jlink, que permite la creación de imágenes de tiempo de ejecución modulares. Estas imágenes de tiempo de ejecución no son más que una colección de un conjunto de módulos y sus dependencias. Una propuesta de mejora de Java, JEP 220, rige la estructura de esta imagen de tiempo de ejecución.
La herramienta JLink está diseñada para proporcionar fases opcionales entre el tiempo de compilación y el tiempo de ejecución, denominado tiempo de enlace, que vincula un conjunto de módulos y sus dependencias transitivas para crear imágenes de tiempo de ejecución. JLink simplifica la implementación y también reduce el tamaño de una aplicación.
La sintaxis de invocación de jLink es la siguiente:
jlink --module-path [modulepath] --add-modules [modules] --limit-modules [modules] --output [path]
Aquí,
–module-path – jLink use la ruta del módulo para encontrar módulos como jars modulares, archivos JMOD
–add-modules – Mencione el módulo que debe incluirse en el conjunto predeterminado de módulos para la imagen de tiempo de ejecución, por defecto, el conjunto de módulos está vacío.
–limit-modules – Use esta opción para limitar los módulos, lo cual es requerido para nuestra aplicación.
–output – La imagen de tiempo de ejecución resultante final se almacenará en el directorio de salida
–ayuda – lista de detalles sobre las opciones de jLink
–versión – mostrar el número de versión
Si obtiene el siguiente error mientras ejecuta el comando jlink:
jlink: command not found
puede instalar el siguiente paquete según su elección de distribución.
Distribución | Comando |
---|---|
Debian | apt-get install openjdk-12-jdk-headless |
Ubuntu | apt-get install openjdk-9-jdk-headless |
Arco Linux | pacman-S jdk10-openjdk |
Kali Linux | apt-get install openjdk-11-jdk-headless |
Fedora | instalación dnf java-9-openjdk-devel-debug-1 |
Raspbian | apt-get install openjdk-9-jdk-headless |
Conclusión
Una nueva herramienta en JDK 9 es el comando jlink, el enlazador de Java para crear imágenes de tiempo de ejecución personalizadas. Puede incluir solo lo que sea necesario para que una aplicación determinada o un conjunto de aplicaciones se ejecuten en un tiempo de ejecución personalizado. Por ejemplo, si está creando un entorno de ejecución para un dispositivo que no admite GUI, puede crear un entorno de ejecución sin los módulos correspondientes compatibles con Swing y JavaFX.