openjdk-6-jre、openjdk-6-jre-headless和openjdk-6-jre-lib之间的区别

108
我对Java JRE的基础知识有些困惑。
我需要在嵌入式系统中运行Java代码,为此需要在Linux内核中安装最小的Java Runtime Environment(JRE),也就是执行Java二进制文件所需的最少包。 我认为只使用JVM是不可能做到这一点的(我这里错了吗?)。
问题是,在查看Debian存储库时,我不太理解openjdk-6-jreopenjdk-6-jre-headlessopenjdk-6-jre-lib包之间的区别。 Java程序只能使用前者吗? 还是需要三个包?
这是一个问题,因为它们之间的大小(MB)存在很大差异。
2个回答

114

你的观点是正确的,运行任何Java应用程序都需要JRE包。

因为你说你正在运行一个嵌入式平台,我假设你想运行的Java应用程序没有GUI。在这种情况下,你可以使用openjdk-6-jre-headless。在openjdk-6-jre-headless软件包页面上有解释:“仅适用于执行非GUI Java程序的最小Java运行时”。

如你所见,从debian软件包详细信息页面openjdk-6-jre-headless依赖于openjdk-6-jre-lib(以及其他软件包),因此无论如何都会安装该软件包。

但是,如果你想运行的Java应用程序有GUI,则需要使用openjdk-6-jre而不是openjdk-6-jre-headless


2
如果你的意思是在内核中包含jre,据我所知是不可能的——jre存在于用户空间而不是内核中。 - Woodham
在Linux(Ubuntu 18.10)上,openjdk-11-jdk-headlessopenjdk-11-jdk之间有什么区别?我们可以在哪里找到相关信息? - christianbueno.1
你可以在这里搜索Ubuntu软件包:https://packages.ubuntu.com/你需要寻找的相关软件包是https://packages.ubuntu.com/cosmic/openjdk-11-jdk-headless和https://packages.ubuntu.com/cosmic/openjdk-11-jdk。 - Woodham
如果您的首选搜索引擎支持,您还可以使用 site: 过滤器来查找包详细信息,以下是示例搜索项: site:packages.ubuntu.com "package name of interest" (Ubuntu)或 site:packages.debian.org "package name of interest"(Debian),其他发行版也类似。 - Pau Coma Ramirez
OP想知道差异,而你回答了他在他的情况下该选择什么 - 这并没有回答问题⁉️ - undefined
显示剩余3条评论

16

有两个不同的软件包可用的主要原因是这些软件包的依赖关系。 openjdk-6-jre 也将依赖于:

libasound2, libgif4, libjpeg62, libpng12-0, libpulse0 , libx11-6, libxext6, libxi6, libxrender1, libxtst6 and zlib1g

与之前的评论相反,openjdk-6-jre 依赖于 openjdk-6-jre-headless,使得后者实际上只是一个子集。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接