À partir de Java 9, la modularisation avec Project Jigsaw facilite la création de JRE légers pour la distribution. Le JRE léger ne contient que les éléments essentiels que votre application utilise, de sorte que vous pouvez garder la taille de votre fichier très petite. C'est donc un support essentiel lors du regroupement de JRE avec une application.
Cet article décrit comment créer un JRE léger.
Tout d'abord, récupérez OpenJDK.
Cette fois, j'ai utilisé le dernier stabilisateur OpenJDK 11 à partir du 02/08/2019. Je vais.
Lorsque le fichier ZIP est développé, la structure des dossiers est la suivante.
jdk-11
├─ bin
├─ conf
├─ include
├─ jmods
├─ legal
├─ lib
└─ release
Utilisez les dossiers bin
et jmods
pour générer un JRE léger.
Vérifiez les dépendances des packages utilisés par l'application (fichier jar) avec la commande jdeps
contenue dans le dossier jdk-11 / bin
. (Vous pouvez également le spécifier avec un caractère générique comme * .jar)
cd jdk-11\bin
jdeps.exe --list-deps --ignore-missing-deps C:\example\app.jar
Lorsque vous exécutez la commande, vous verrez une liste des packages utilisés par cette application. Vous pouvez voir que l'exemple ʻapp.jar` ci-dessus dépend des packages suivants:
java.base
java.desktop
java.logging
java.sql
java.xml
En d'autres termes, si au moins ces packages sont inclus dans le JRE pour exécuter l'application, ce sera un environnement d'exécution Java.
Maintenant que nous avons une liste de packages utilisés par l'application avec la commande jdeps
, nous allons générer un JRE qui ne contient que ces packages.
Pour générer un JRE, passez simplement les packages requis à la commande jlink
.
Si vous transmettez plusieurs packages, séparez-les par des virgules.
jlink.exe --compress=2 --module-path ..\jmods --add-modules java.base,java.desktop,java.logging,java.sql,java.xml --output jre
Lorsque vous exécutez la commande, un dossier jre
sera créé dans le dossier actuel.
Ce dossier généré est un JRE léger.
Il ne vous reste plus qu'à utiliser ce JRE léger comme environnement d'exécution Java de votre application. Il peut être utilisé sans aucun problème tant qu'il ne dépend pas du nouveau package en raison de modifications côté application.
En comparant les tailles de fichier de la «version originale» d'OpenJDK 11 avec la «version allégée» de la «version allégée» contenant uniquement un package spécifique [^ 1], les résultats suivants ont été obtenus.
Version originale | Version légère |
---|---|
299M | 46M |
La version allégée de JRE contient uniquement les packages minimum requis pour votre application, de sorte que la taille du fichier reste réduite.
En raison de la grande différence de taille de fichier, nous vous recommandons de générer un JRE léger avant de le regrouper lors de son regroupement avec votre application.
Recommended Posts