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

cyc*_*hoi 7 java software-update

我可以卸载旧的更新吗?

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

我说的是 Windows 的 Java。

kar*_*rel 9

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

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

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


此次更新之所以没有移除旧版本,是为了让用户可以同时安装多个版本的 Java,然后为不同的应用程序选择不同的可用 Java 版本,尽管在 Windows 中不推荐这样做。请参阅Oracle Java™ 运行时环境版本选择

为了卸载较旧的 Java 版本或更新,Oracle 发布了一个单独的应用程序,用于卸载过时的 Java 版本,称为Java Uninstall Tool for Windows。适用于 Windows 的 Java 卸载工具与 Java 6u10 和更高版本一起在 Windows XP 和更高版本到 Windows 8 上运行。

  • 但是为什么更新不为您删除旧版本?或者升级之前的版本。一定有原因它**确实**保留旧版本,即使建议将其删除.... (5认同)
  • 此次更新之所以没有移除旧版本,是为了让用户可以同时安装多个版本的 Java,然后为不同的应用程序选择不同的可用 Java 版本,尽管在 Windows 中不建议这样做。请参阅 [Oracle Java™ 运行时环境版本选择](http://www.oracle.com/technetwork/java/javase/index-141751.html)。 (3认同)
  • 我还想知道为什么他们不为您是否要自动卸载旧版本或更新提供可配置选项。由于 Java 的主要版本有 50 多个更新,这些较旧的更新会占用大量磁盘空间。每次(自动)更新后手动卸载很麻烦... (3认同)
  • 它确实删除了旧版本。许多较旧的安装程序没有,但较新的安装程序有。此外,可以为安装程序提供一个选项,将安装标记为固定。未来的安装程序不会卸载该版本。此功能适用于需要特定 Java 版本的应用程序。此外,在更改卸载旧版本的行为之前安装的 Java 版本将不会被卸载。因此,如果您有不需要的旧版本,则至少需要进行一轮清理。 (2认同)

Ton*_*nny 6

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

这主要发生在版本升级时:比如从 1.6 版升级到 1.7 版,但在非常罕见的情况下也会发生类似 1.7.1 - 1.7.2 的小更新。
有时某些愚蠢的软件只是坚持存在特定的 Java 版本,即使它可以与新版本完美配合。
(我曾见过一些软件会检查是否存在属于 1.5.x 版的特定 Java 文件夹,但只要该文件夹存在,它就会很高兴地在 1.6.x 上运行。该文件夹中甚至没有任何文件。)

因此,必须可以并行运行 2 个或更多版本,并且删除旧版本不是默认的。

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