跳到主要内容

JEP 231:移除启动时的 JRE 版本选择功能

QWen Max 中英对照

概述

移除在 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 中将这种情况更改为严重错误。

测试

需要进行测试以确保移除此功能,并报告相应的警告和错误。