我们正计划迁移我们的 Java 8 项目以使用 Java 11。但我注意到 Java 11 没有 JRE 文件夹。
在 Java 9 和 Java 10 中,文件夹结构发生了变化,即 java\jdk1.x
或 java\jre1.x
,其中 x
是 Java
但是在 Java 11 中,我只得到一个文件夹,即 java\jdk-11
。如果没有 jre ,我的客户将如何使用我的应用程序?
我的理解是 Java 11 正在强制对我们的应用程序进行模块化,并且需要使用 jlink 创建我们自己的 jre 以在客户端运行应用程序。
我的理解正确吗?
原文由 Maha Lak 发布,翻译遵循 CC BY-SA 4.0 许可协议
20 年来,JDK 附带了一个 JRE,这只是其安装在系统不同目录中的功能的一个子集。
事实上,它附带了两个相同的 JRE,一个安装在 JDK 安装目录中,一个安装在 JDK 安装目录之外。
这一直让我感到困惑,因为维护人员这样做完全是浪费精力,而且完全浪费了安装它的计算机上的磁盘空间,因为 JRE 只是复制了 JDK 可以做的一些事情已经做了。
最后,在 Java 11 中,Oracle 和 OpenJDK 团队决定结束这种愚蠢行为,只分发一个东西,即 JDK。这个 JDK 在安装后实际上比以前单独使用旧的 JRE 更小,甚至删除了一些有效的论点,即您希望为磁盘空间有限的设备提供一个单独的 JRE,这个论点从未解释过为什么 2 个 JRE 会首先安装单个 JDK,但这样做是为了证明需要 JRE 作为 JDK 的精简运行时环境。
因此,不需要单独的 JRE,而且很长一段时间都没有了,更不用说将它作为 JDK 安装的一部分包含并强行安装了。
不,您不需要创建自己的 JRE。只需在客户端计算机上安装 OpenJDK 并确保将 $JAVA_HOME/bin 添加到系统路径,就像您必须对旧 JRE 所做的那样。
哦,去掉 Windows 目录树中的任何 java*.exe 文件,某些版本的旧 JRE 安装程序不会将其放置在那里,以及一些 JRE 安装程序添加了一些奇怪条目的系统路径。