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