#java #openjdk
#java
Вопрос:
У меня возникли проблемы с пониманием некоторых основ Java JRE.
Мне нужно запустить код Java во встроенной системе, и для этого мне нужна минимальная среда выполнения Java, установленная в ядре Linux, то есть минимальный пакет, необходимый для выполнения двоичных файлов Java. Я думаю, что это невозможно сделать только с помощью JVM (необходим пакет JRE, я здесь не прав?)
Дело в том, что при просмотре репозиториев Debian я не совсем понимаю различия между пакетами openjdk-6-jre
openjdk-6-jre-headless
и openjdk-6-jre-lib
. Будут ли программы Java запускаться только с первым? или нужны ли все три из них?
Это проблема, поскольку между ними существует большая разница в размере (МБ).
Ответ №1:
Вы правы в том, что вам понадобится пакет JRE для запуска любого приложения Java.
Поскольку вы говорите, что работаете на встроенной платформе, я предполагаю, что приложение Java, которое вы хотите запустить, не имеет графического интерфейса. В этом случае вас все устроит openjdk-6-jre-headless
. Это объясняется на странице пакета openjdk-6-jre-headless здесь «Минимальная среда выполнения Java — необходима для выполнения Java-программ, отличных от GUI».
Как вы можете видеть на странице сведений о пакете debian, зависит от openjdk-6-jre-headless
openjdk-6-jre-lib
(среди других пакетов), так что он будет установлен в любом случае.
Однако, если приложение Java, которое вы хотите запустить, имеет графический интерфейс, вам потребуется openjdk-6-jre
вместо openjdk-6-jre-headless
Комментарии:
1. Большое вам спасибо. На самом деле мне нужно скомпилировать ядро Linux 2.6 … для этой платформы, и я не уверен, возможно ли включить в процесс сборки jre (любую версию, наименьший размер, если это возможно). Вы знаете, возможно ли это?
2. Если вы имеете в виду включить jre с ядром, то, насколько я знаю, это невозможно — jre живет в пользовательском пространстве, а не в ядре.
3. Ссылка сообщает об ошибке: «указано два или более пакетов (openjdk-6-jre-безголовый squeeze)».
4. как насчет различий между
openjdk-11-jdk-headless
иopenjdk-11-jdk
в Linux (ubuntu 18.10), где мы можем найти относительную информацию?5. Вы можете искать пакеты Ubuntu здесь: packages.ubuntu.com Релевантными из них, которые вы ищете, являются packages.ubuntu.com/cosmic/openjdk-11-jdk-headless и packages.ubuntu.com/cosmic/openjdk-11-jdk
Ответ №2:
Основной причиной наличия двух разных доступных пакетов являются зависимости пакетов. openjdk-6-jre
также будет зависеть от:
libasound2, libgif4, libjpeg62, libpng12-0, libpulse0 , libx11-6, libxext6, libxi6, libxrender1, libxtst6 and zlib1g
И, вопреки предыдущему комментарию openjdk-6-jre
, зависит от openjdk-6-jre-headless
того, что делает последнее действительно просто подмножеством.