Java 在每次更新后不会覆盖/删除其旧更新的原因是什么?

Java 在每次更新后不会覆盖/删除其旧更新的原因是什么?

我可以卸载旧更新吗?

关于更新,我指的是那些 Update 1、Update 2,例如 Java 7 Update 1、Java 7 Update 2 等等。

我正在谈论适用于 Windows 的 Java。

答案1

我应该卸载旧版本的 Java 吗?

我们强烈建议您从系统中卸载所有旧版本的 Java。在系统中保留旧版本的 Java 会带来严重的安全风险。从系统中卸载旧版本的 Java 可确保 Java 应用程序在系统上运行时具有最新的安全性和性能改进。

来源:为什么我应该从系统中卸载旧版本的 Java?


更新不删除旧版本的原因是为了允许用户同时安装多个 Java 版本,然后为不同的应用程序选择不同的可用 Java 版本,尽管在 Windows 中不建议这样做。请参阅Oracle Java™ 运行时环境版本选择

为了卸载旧版 Java 或更新,Oracle 发布了一款单独的应用程序,用于卸载过时的 Java 版本,名为适用于 Windows 的 Java 卸载工具。适用于 Windows 的 Java 卸载工具可在 Windows XP 及更高版本的 Windows 8 上运行 Java 6u10 及更高版本。

答案2

在极少数情况下,新版本的 Java 与您现有的软件不兼容。
(Java 在升级到新版本时有时会删除某些功能。更常见的情况是,某些功能的行为略有不同,这会破坏一些依赖旧行为的应用程序。)

这种情况大多发生在版本升级时:例如从 1.6 版升级到 1.7 版,但在极少数情况下,在 1.7.1 - 1.7.2 等小更新中也会出现这种情况。
有时某些愚蠢的软件会坚持要求存在特定的 Java 版本,即使它可以在新版本下完美运行。
(我见过一些软件会检查是否存在属于 1.5.x 版的特定 Java 文件夹,但只要该文件夹存在,它就可以在 1.6.x 版上顺利运行。该文件夹中甚至没有任何文件。)

由于所有这些,必须能够并行运行 2 个或更多版本,并且删除旧版本不是默认的。

PS 真正依赖特定版本的 Java 运行时的应用程序应在其自己的程序环境中使用该特定版本的私有副本,而不是使用安装在操作系统级别的版本。(此嵌入副本永远不会升级,除非通过升级使用它的应用程序。)
这是推荐的做法,但并非所有软件都遵守规则。

相关内容