Поэтому я только начал разрабатывать собственные программы на Java с помощью Netbeans, создавая для них сценарии установки с помощью Inno Script. Но затем я заметил, что даже базовые программы, как правило, довольно требовательны к ресурсам, потому что у каждой программы есть собственная копия среды выполнения виртуальной машины Java, необходимая для ее выполнения. Я подумал, что хорошим решением будет установка среды выполнения JVM в единую папку (разве это не одни и те же файлы, скопированные в каждую отдельную программу?), из которой каждая отдельная программа может затем запускать общие файлы.
Проблема в том, что я действительно не знаю, как это сделать. Куда именно мне установить среды выполнения и как настроить этот путь, чтобы любые собственные Java-программы, запускаемые на компьютере, автоматически обнаруживали и использовали их? Будет ли достаточно добавления общего каталога в среду %PATH% или нет?
Пожалуйста помоги. Любая помощь будет высоко оценена.
Я еще ничего не пробовал, так как подумал, что, может быть, сначала мне следует получить совет.
::: ОБНОВЛЯТЬ ::: Итак, я думаю, что нашел возможное решение своей проблемы, хотя мне еще предстоит его попробовать, потому что я не могу получить доступ к своей IDE и другим инструментам до завтра по причинам. Но я подумал, что, возможно, я мог бы установить общие среды выполнения виртуальной машины Java в каталог, а затем добавить каталог в переменную среды %PATH%, чтобы его среды выполнения могли выполняться так же, как системные библиотеки DLL. Я опубликую обновленную информацию о результатах теории, как только смогу.
Вам не нужны сторонние инструменты. Java может установить встроенную виртуальную машину с ресурсами там, где вы хотите.
Если вы действительно обеспокоены тем, что Java является тяжеловесной, вам, вероятно, следует использовать язык без GC, который компилируется в исполняемые файлы собственного кода; то есть С или С++.
Откуда вы знаете, что это правда? => «даже базовые программы, как правило, довольно требовательны к ресурсам, потому что каждая программа имеет свою собственную копию среды выполнения виртуальной машины Java, необходимую для ее выполнения». И, в частности, что вы подразумеваете под «довольно ресурсоемким»? Чтобы было ясно, я не согласен и не не согласен с вашим утверждением, но когда вы делаете это утверждение ядром своего вопроса, вам действительно нужно предоставить некоторые доказательства. Вы ищете решение, не демонстрируя, что есть проблема, которую нужно решить.
@skomisa, ну, я написал простую пустую программу с графическим интерфейсом, и она все равно заняла около 200+ МБ места. Я проверил, и большинство из них были просто средами выполнения JVM, поэтому я хочу, чтобы они были перемещены в общую папку. Таким образом, я не буду занимать более 200 МБ пространства для каждого из моих приложений, потому что приложения будут использовать одну и ту же среду выполнения вместо того, чтобы иметь свою собственную копию.
Вы не должны оставлять комментарии, чтобы поблагодарить. Пожалуйста, ознакомьтесь с рекомендациями: stackoverflow.com/help/someone-answers, где это прямо сказано.
@JuancarlosKaiShiro Хорошо. В этом случае вы должны добавить эту информацию к своему вопросу. Как следует из ответа Василия, вы четко не указали конкретные улучшения, которые вы ищете. Поэтому любые ответы обязательно являются лишь предположениями. И без метрик, как вы можете узнать, действительно ли какие-либо изменения, которые вы вносите, полезны?
Вы должны упомянуть, что используете JavaFX, так как среда выполнения JavaFX даже больше, чем среда выполнения Java. Вы можете удалить ненужные вещи из модульной среды Java, но это не поможет, если фактическое потребление пространства не связано со средой выполнения Java. Использование общей среды выполнения — отличная идея; в основном это означает, что вы заново изобрели неродные программы, известные как обычные Java-программы.




Используйте установщик OpenJDK по умолчанию для вашей операционной системы, и если установщик этого не делает, просто добавьте каталог bin каталога JAVA HOME в переменную среды PATH.
Если ваш главный приоритет — небольшой размер исполняемого файла, Java не подходит. Вы должны использовать язык, предназначенный для компиляции в простой собственный исполняемый файл с минимальным исполняемым файлом. Например, Swift, Rust и C.
Если вы хотите продолжить работу с Java, уменьшив при этом размер своего программного артефакта, выполните следующие действия.
Если скорость запуска является приоритетом, рассмотрите возможность использования JVM с OpenJ9 , а не HotSpot.
Если скорость выполнения является приоритетом, используйте предварительную компиляцию вашего Java-приложения с помощью технологии GraalVM.
Вы сказали:
Я подумал, что хорошим решением будет установка среды выполнения JVM в единую папку.
Вы можете предположить, что на компьютере пользователя установлена JRE или JDK. Тогда вам не нужно включать среду выполнения Java в ваш программный артефакт.
Очевидно, это практично только в том случае, если (а) ваша пользовательская база использует управляемые компьютеры, например, в корпоративной или образовательной среде, или (б) ваши пользователи достаточно активны и сообразительны, чтобы получить и установить JRE / JDK самостоятельно.
В первые годы существования Java Sun Microsystems удалось убедить большую часть индустрии персональных компьютеров включить JRE в свои компьютеры. Но эта практика закончилась много лет назад.
Я нашел решение проблемы сейчас.
Я опробовал свою первоначальную теорию, но она не сработала, потому что оказалось, что собственные Java-программы (или, по крайней мере, те, которые скомпилированы с использованием Java FX в Netbeans) жестко запрограммированы на поиск среды выполнения JVM в определенной папке, и эта папка определена в простой текстовый файл конфигурации. Итак, вместо добавления пользовательской папки, в которой я устанавливаю среды выполнения JVM, в переменную среды %PATH%, мне просто нужно было изменить каталог среды выполнения в файле конфигурации.
Это скомпилированная нативная Java-программа
Это директория конфигурационного файла в файлах программы
Моя общая папка среды выполнения
Внутри бинарных файлов JVM каталога среды выполнения
Нативная Java-программа, теперь без собственных сред выполнения
Благодаря этим настройкам я теперь могу запускать две отдельные нативные программы Java на компьютере без Java, не имея у каждой из них собственных сред выполнения, вместо этого разделяя среды выполнения в общей папке сред выполнения (определяемой в соответствующих файлах конфигурации). Я также настроил установки для собственных программ, так что если общие среды выполнения не будут установлены на целевом компьютере, они будут установлены, когда любая из программ будет установлена или восстановлена с помощью ее установки. Кроме того, более новые модифицированные среды выполнения можно легко настроить так, чтобы они переопределяли старые, обновляя среды выполнения в общей папке.
Забастовка модератора meta.stackexchange.com/questions/389811/… - так что я также не буду делать здесь никаких (дальнейших) действий, связанных с контентом/курированием