Оптимизация времени загрузки JRE и JVM с DVD

Я отправляю частную JRE вместе с программой jar на DVD. Это занимает около 3 минут, если я запускаю программу напрямую с DVD. Вероятно, для загрузки библиотек JRE в основную память требуется время, так как скорость оптических дисков низкая. Однако, когда я закрываю программу и перезапускаю ее, она запускается мгновенно, как если бы JRE была установлена ​​на локальном компьютере (а это не так). Я думаю, что JRE остается в памяти даже после закрытия программы.

3 минуты - это большое время ожидания для пользователей, могу ли я как-то оптимизировать код (это единственное, что находится под моим контролем), чтобы он загружал только несколько библиотек для запуска и загружал другие необходимые по требованию. Теперь, вероятно, он пытается загрузить все с DVD, прежде чем показывать окно программы, как это предлагает

$java.exe -verbose -jar myProgram.jar

Есть ли другое решение для быстрого запуска программы даже в первый раз? В настоящее время единственным обходным решением является использование заставки Launch4J .bmp, но это очень статично.

Примечание. Я знаю, что установка JRE на локальный компьютер решит проблему, но эта программа не предназначена для технических пользователей, мой Launch4J не находит ее, если она установлена ​​в пользовательском каталоге. Также мой DVD защищен от копирования, так что программа не может распространяться.


person Neil    schedule 27.11.2012    source источник
comment
Вы просматривали excelsior-usa.com/jet.html?   -  person barti_ddu    schedule 27.11.2012
comment
Пока нет, он не поддерживает JDK7, кажется   -  person Neil    schedule 27.11.2012
comment
Excelsior JET 9 поддерживает Java 7: excelsiorjet.com   -  person Dmitry Leskov    schedule 14.01.2014


Ответы (1)


Упакуйте свое приложение вместе с частной JRE в один EXE-файл, который будет самораспаковываться во временный каталог пользователя и автоматически запускать ваше приложение. Улучшение времени запуска поразит вас:

http://www.excelsior-usa.com/blog/excelsior-jet/java-app-as-a-single-exe/

(Загрузите примеры упакованных приложений и запишите их на DVD, чтобы быстро проверить мое утверждение.)

Позвольте мне подчеркнуть, что вы можете добиться результата, используя только бесплатные инструменты, и при желании немного улучшить его с помощью Excelsior JET. Подробные инструкции см. в статье нашей базы знаний (большинство из них применимы независимо от того, используете ли вы Excelsior JET или нет):

HOWTO: создание одного EXE-файла из вашего Java-приложения

Отказ от ответственности: Как вы, возможно, уже догадались, я работаю в Excelsior. Но опять же, все это работает для частной JRE, и результат с точки зрения улучшения времени запуска почти такой же хороший.

person Dmitry Leskov    schedule 28.11.2012
comment
спасибо за ваш ответ, я оценил это программное обеспечение ранее, но не мог использовать, потому что он не поддерживает Java7. есть ли работа вокруг? - person Neil; 28.11.2012
comment
Да, мы немного опоздали с Java 7. Извините. Мы заняты 64-битной версией atm, поэтому начнем работать над Java 7 только в начале 2013 года. - person Dmitry Leskov; 28.11.2012
comment
7-Zip SFX также работает с частной JRE — ознакомьтесь со статьей базы знаний. - person Dmitry Leskov; 28.11.2012
comment
@Dimitry хм .. но я использую последние версии JavaFx, поэтому не могу понизить версию Java для перекомпиляции. - person Neil; 28.11.2012
comment
метод SFX прекрасно работает, но проблема в том, что каталог моего приложения содержит около 200 МБ mp3-файлов, которые транслируются при запуске программы. Поскольку они не сильно сжимаются, мой окончательный автономный исполняемый файл становится очень большим (221 МБ), что приводит к длительному времени запуска (длительное извлечение). В любом случае решение приходит вам на ум? - person Neil; 28.11.2012
comment
Среда выполнения JavaFX 2.2 доступна для Java SE 6 в виде отдельной загрузки, и текущую версию Excelsior JET можно настроить для работы с ней: excelsior-usa.com/blog/excelsior-jet/javafx-2-already-supported - person Dmitry Leskov; 29.11.2012
comment
Оставьте эти MP3-файлы на DVD в виде отдельных файлов, затем используйте трюк с переменной среды в конце нашей статьи базы знаний, чтобы получить путь к SFX и получить от него букву диска. - person Dmitry Leskov; 29.11.2012