Ab Java 9 erleichtert die Modularisierung mit Project Jigsaw das Erstellen einfacher JREs für die Verteilung. Die leichte JRE enthält nur das Nötigste, was Ihre Anwendung verwendet, sodass Sie Ihre Dateigröße sehr klein halten können. Daher ist es eine unverzichtbare Maßnahme, wenn JRE mit einer Anwendung gebündelt wird.
Dieser Artikel beschreibt, wie eine leichte JRE erstellt wird.
Holen Sie sich zuerst OpenJDK.
Dieses Mal habe ich den neuesten Stabilisator OpenJDK 11 vom 02.08.2019 verwendet. Ich werde.
Wenn die ZIP-Datei erweitert wird, sieht die Ordnerstruktur wie folgt aus.
jdk-11
├─ bin
├─ conf
├─ include
├─ jmods
├─ legal
├─ lib
└─ release
Verwenden Sie die Ordner "bin" und "jmods", um eine einfache JRE zu generieren.
Überprüfen Sie die Abhängigkeiten der von der Anwendung verwendeten Pakete (JAR-Datei) mit dem Befehl jdeps
im Ordner jdk-11 / bin
. (Sie können es auch mit einem Platzhalter wie * .jar angeben.)
cd jdk-11\bin
jdeps.exe --list-deps --ignore-missing-deps C:\example\app.jar
Wenn Sie den Befehl ausführen, wird eine Liste der von dieser Anwendung verwendeten Pakete angezeigt.
Sie können sehen, dass das obige Beispiel app.jar
von den folgenden Paketen abhängt:
java.base
java.desktop
java.logging
java.sql
java.xml
Mit anderen Worten, wenn mindestens diese Pakete in der JRE enthalten sind, um die Anwendung auszuführen, handelt es sich um eine Java-Ausführungsumgebung.
Nachdem wir nun eine Liste der Pakete haben, die von der Anwendung mit dem Befehl jdeps
verwendet werden, generieren wir eine JRE, die nur diese Pakete enthält.
Um eine JRE zu generieren, übergeben Sie einfach die erforderlichen Pakete an den Befehl jlink
.
Wenn Sie mehrere Pakete übergeben, trennen Sie diese durch Kommas.
jlink.exe --compress=2 --module-path ..\jmods --add-modules java.base,java.desktop,java.logging,java.sql,java.xml --output jre
Wenn Sie den Befehl ausführen, wird im aktuellen Ordner ein Ordner "jre" erstellt. Dieser generierte Ordner ist eine leichte JRE.
Jetzt müssen Sie nur noch diese kompakte JRE als Java-Ausführungsumgebung Ihrer Anwendung verwenden. Es kann problemlos verwendet werden, solange es aufgrund von Änderungen auf der Anwendungsseite nicht vom neuen Paket abhängt.
Beim Vergleich der Dateigrößen der "Originalversion" von OpenJDK 11 mit der "Lightweight-Version" der "Lightweight-Version", die nur ein bestimmtes Paket enthält [^ 1], wurden die folgenden Ergebnisse erzielt.
Originalfassung | Leichte Version |
---|---|
299M | 46M |
Die Lightweight-Version von JRE enthält nur die für Ihre Anwendung erforderlichen Mindestpakete, sodass die Dateigröße gering gehalten wird.
Aufgrund des großen Unterschieds in der Dateigröße wird empfohlen, vor dem Bündeln eine einfache JRE zu generieren, wenn Sie diese mit Ihrer Anwendung bündeln.
Recommended Posts