JEP 231:移除启动时的 JRE 版本选择功能
概述
移除在 JRE 启动时请求非启动中的 JRE 版本的能力。
动机
“多重 JRE”(“mJRE”)功能允许开发者指定可以用于启动应用程序的 JRE 版本或版本范围。版本选择标准可以在应用程序的 jar
文件的清单条目中指定(JRE-Version
),或者作为命令行选项(-version:
)提供给 java
启动器。如果启动的 JRE 版本不满足条件,启动器会搜索符合要求的版本,如果找到,则启动该版本。
部署应用程序在实践中不仅仅是选择一个特定的 JRE。现代应用程序通常通过 Java Web Start (JNLP)、本地操作系统打包系统或主动安装程序来部署,所有这些技术都有其自己的方式来查找,甚至有时安装并随后更新应用程序的适当 JRE。
mJRE 功能仅解决了整个部署问题的一部分。此外,当它在 JDK 5 中被引入时,从未得到全面的文档说明:-version:
选项在 java
命令的文档 中有所提及,但 JRE-Version
清单条目却未出现在任何常见的 JDK 文档中,也未出现在 Java SE 平台规范中。据我们所知,这一功能极少被使用。它不必要地复杂化了 Java 启动器的实现,使其维护和增强变得繁琐不堪。
描述
移除 mJRE 功能。修改启动器如下:
-
如果命令行中给出了
-version:
选项,则发出错误消息并退出,以及 -
如果在
jar
文件中发现JRE-Version
清单条目,则发出警告消息并继续。
之所以在第二种情况下发出警告而不是严重错误,是因为清单条目可能存在于旧的 jar
文件中,而这些文件无法轻易修改,因此最好继续执行而不是中止。我们预计会在 JDK 10 中将这种情况更改为严重错误。
测试
需要进行测试以确保移除此功能,并报告相应的警告和错误。