Мы связываем Java 6 JRE с нашим установщиком приложений, чтобы он мог запускаться на любой машине, но это делает приложение немного тяжелее. Поэтому мы планируем уменьшить размер JRE. Если кто-то выполнил такую задачу, не могли бы вы дать руководство, чтобы двигаться дальше?
Уменьшение размера JRE
Ответ 1
Посмотрите файл README в каталоге JRE. В разделе "Дополнительные файлы и каталоги" перечислены некоторые файлы, которые можно удалить из Oracle/Sun JRE, если вы упаковываете их в свое приложение.
Я использую файл сборки Ant для копирования JRE из места установки системы в каталог пакета при создании установки. Поместите список файлов, которые вы хотите исключить в отдельный файл, и используйте атрибут excludefile для загрузки этого списка:
<copy todir="${deployed_jre_dir}">
<fileset dir="${system_jre_dir}" excludesfile="jre_excludes.properties"
</copy>
Пример файла 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
Ответ 2
Вы пытаетесь уменьшить стандартный размер JRE? Не делай этого. Вы можете выбрать альтернативу JRE, которая может быть меньше. Список можно найти на этой странице в Википедии. Как всегда, остерегайтесь проблем совместимости и тщательно протестируйте свое приложение.
Другим, более безопасным способом является просто установка JRE на целевой машине.
Ответ 3
Некоторая информация об обновлении: поскольку для создания небольших встроенных пакетов JRE есть официальный инструмент Oracle, называемый jrecreate.
Ответ 4
Для моего настольного приложения Java 8 Update 144 я исключаю два больших файла Java FX:
bin/jfxwebkit.dll // ~34 MB unpacked
lib/ext/jfxrt.jar // ~17 MB unpacked
Зарезервированный jre составляет 49 МБ вместо 66 МБ.
Для меня это приемлемый компромисс между уменьшенным размером и добавленной сложностью сборки (и потенциальными ошибками).