28 Stimmen

Verringerung der Größe von JRE

Wir bündeln die Java 6 JRE mit unserem Anwendungsinstallationsprogramm, so dass es auf jedem Rechner ausgeführt werden kann, aber das macht die Anwendung ein wenig schwerer. Daher planen wir, die Größe der JRE zu reduzieren. Kann jemand, der diese Art von Aufgabe bereits erledigt hat, eine Anleitung für das weitere Vorgehen geben?

28voto

AngerClown Punkte 6001

Sehen Sie sich die README-Datei im JRE-Verzeichnis an. Der Abschnitt "Optionale Dateien und Verzeichnisse" listet eine Reihe von Dateien auf, die aus der Oracle/Sun JRE entfernt werden können, wenn Sie sie zusammen mit Ihrer Anwendung packen.

Ich verwende eine Ant-Build-Datei, um die JRE beim Erstellen einer Installation vom Systeminstallationsverzeichnis in das Paketverzeichnis zu kopieren. Legen Sie die Liste der auszuschließenden Dateien in einer separaten Datei ab und verwenden Sie das Attribut "excludesfile", um diese Liste zu laden:

<copy todir="${deployed_jre_dir}">
  <fileset dir="${system_jre_dir}" excludesfile="jre_excludes.properties" 
</copy>

Beispiel für die Datei jre_excludes.properties:

# per the README from the JRE, these files are for the browser plugin and are not needed otherwise
#bin/javaw.exe
bin/javaws.exe
bin/javacpl.exe
bin/jucheck.exe
bin/jusched.exe
bin/wsdetect.dll
bin/NPJPI*.dll
bin/NPJava*
bin/NPOJI610.dll
bin/RegUtils.dll
bin/axbridge.dll
bin/deploy.dll
bin/jpicom.dll
bin/javacpl.cpl
bin/jpiexp.dll
bin/jpinscp.dll
bin/jpioji.dll
bin/jpishare.dll
lib/deploy.jar
lib/plugin.jar
lib/javaws.jar
lib/javaws/messages*
lib/javaws/miniSplash.jpg
bin/new_plugin**
bin/jureg*
bin/ssv*
bin/jqs*
bin/jp2*
lib/deploy/**/*

# if you do not need any RMI stuff
# wildcard to catch .exe files on Windows
# note rmi.dll is not excluded, which is needed by jconsole; add rmi.dll if you do not need jsonsole
bin/jbroker*
bin/java-rmi*
bin/rmid*
bin/rmiregistry*
bin/tnameserv*
bin/orbd*
bin/servertool*

# do not include QuickTime
# this will be in the jre dir for machines that have QT installed
lib/ext/QTJava.zip

4voto

Roman K Punkte 3249

Einige aktuelle Informationen: Seit Java 8 gibt es ein offizielles Oracle-Tool namens jrecreate für die Erstellung von kleinen eingebetteten JRE-Paketen.

4voto

Reto Höhener Punkte 4609

Für meine Java 8 Update 144 Desktop-Anwendung schließe ich die 2 großen Java FX-Dateien aus:

   bin/jfxwebkit.dll // ~34 MB unpacked
   lib/ext/jfxrt.jar // ~17 MB unpacked

Die gezippte jre-Datei ist 49 MB statt 66 MB groß.

Für mich ist dies ein akzeptabler Kompromiss zwischen reduzierter Größe und erhöhter Komplexität (und möglichen Fehlern).

1voto

darioo Punkte 45156

Sie versuchen, die Größe einer Standard-JRE zu reduzieren? Tun Sie das nicht. Sie können eine alternative JRE bündeln, die möglicherweise kleiner ist. Eine Liste finden Sie unter diese Wikipedia-Seite . Wie immer sollten Sie auf Kompatibilitätsprobleme achten und Ihre Anwendung gründlich testen.

Eine andere und sicherere Möglichkeit besteht darin, lediglich die Installation einer JRE auf dem Zielrechner zu verlangen.

0voto

Praytic Punkte 1306

Sie können verwenden jlink Tool zur Nachbearbeitung von JDK und zur Erstellung eines kleineren Abbilds, indem nur ein bestimmter Satz von JMPS Module und Debug-Informationen. Dies ist derzeit eine gängige Praxis, da wir mehr containerisierte Umgebungen verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X