[JAVA] Comment créer un JRE léger pour la distribution

Aperçu

À 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.

procédure

1. Obtention d'OpenJDK

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.

2. Vérification de la dépendance

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.

3. Générez un JRE contenant uniquement des packages spécifiques

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.

Comparaison de la taille du fichier

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

Comment créer un JRE léger pour la distribution
Comment faire un MOD pour Slay the Spire
Comment créer un conteneur Java
Comment créer un pilote JDBC
Comment créer un écran de démarrage
Comment créer un plug-in Jenkins
Comment faire un projet Maven
Comment créer un tableau Java
Comment créer un résumé de calendrier Java
Comment créer un référentiel Maven pour 2020
Comment créer un robot Discord (Java)
Comment faire un diamant révolutionnaire en utilisant Java pour déclaration wwww
Comment créer une base de données H2 n'importe où
Comment créer des pages pour le tableau "kaminari"
Comment faire un pot ombré
[Java] Comment rendre plusieurs boucles for uniques
Comment faire une méthode de jugement pour rechercher n'importe quel caractère dans le tableau
Comment utiliser un tableau pour la clé TreeMap
Comment écrire un test unitaire pour Spring Boot 2
[Spring Boot] Comment créer un projet (pour les débutants)
Comment faire un cache sans trop réfléchir
Java - Comment créer JTable
Comment laisser un commentaire
[Rails] Comment faire des graines
Comment insérer une vidéo
Comment créer une méthode
SDWebImage: Comment vider le cache pour une UIImageView particulière
Apprendre Ruby avec AtCoder 13 Comment créer un tableau à deux dimensions
Comment générer des valeurs de tableau sans utiliser d'instruction for
Minecraft Modding [1.12] Comment attacher un rendu spécial pour Item
Comment créer et lancer un Dockerfile pour Payara Micro
Essayez de faire un simple rappel
Comment spécifier la validation pour time_field
Comment installer JMeter pour Mac
Comment signer Minecraft MOD
[Swift] Comment envoyer une notification
Essayez de créer un itérateur qui puisse être vu
[Android] Comment créer un fragment de dialogue
Comment créer un fichier jar sans dépendances dans Maven
Comment identifier le chemin sur lequel il est facile de se tromper
Comment vérifier le contenu de la chaîne de caractères java de longueur fixe
Comment exécuter un contrat avec web3j
Comment trier une liste à l'aide du comparateur
Un mémorandum sur l'utilisation d'Eclipse
Comment utiliser binding.pry pour afficher le fichier
Comment installer Play Framework 2.6 pour Mac
[Basique] Comment écrire un auto-apprentissage Dockerfile ②
Comment insérer une vidéo dans Rails
[Java] Comment transformer un tableau à deux dimensions avec une instruction for étendue
Comment ajouter un nouveau hachage / tableau