Java 6 公开发行的最后一个版本将于 2013 年 2 月 19 日发布。之后 Java SE 6 运行时和 SDK 的所有新的安全更新、补丁和修复将只能通过 My Oracle Support 获取,因而只有使用 Oracle 商业许可的用户才能获取。
考虑到这一点,Oracle 在去年年底就开始通过自动更新用 Java SE 7 来自动替换 Java SE 6 了。Oracle 在公告中宣称,他们
……将于 2012 年 12 月开始把 Windows 32 位 Java 运行时环境(JRE)的用户从 JRE 6 升级到 JRE 7。
Java 自动更新机制是为让 Java 用户保持更新到最新的安全修复而设计的。为实现该目标,依赖 Java 自动更新机制的 Windows 用户的 JRE 6 将被替换为 JRE 7。 Oracle 将于 2012 年 12 月开始挑选部分用户进行从 JRE 6 到 JRE 7 的自动更新,以评估自动更新机制、用户体验和无缝迁移。之后,随着 Java 的更新版本 Java SE 7 Update 11(Java SE 7u11)在 2013 年 2 月发布,Oracle 会开始将所有 Windows 32 位用户的 JRE 6 升级到 JRE 7。
这种迁移是存在争议的。JNBridge(主要业务是 Java/NET 的互操作)的 CTO Wayne Citrin 在一篇博客文章中写道:
这太让人吃惊了。Oracle 已经做出决定,为修复广泛报道的安全问题,他们不只会更新 Java 7(他们最新的 Java 版本),还将彻底删除一个完全独立的产品。没错,Java 6 就是独立于 Java 7 的产品。它们可以同时安装,而且很多用户的机器上就是同时安装了 Java 6 和 Java 7。有些应用依赖 Java 6,而其他应用可能依赖 Java 7,这些依赖通常是硬编码的,或者通过配置指向了正确却又不同的文件位置。你能想象微软在发布.NET 4.0 的更新的同时把.NET 2.0 移除掉吗?问题就是这么严重。
更糟糕的是,看来他们是要站在自己的立场上将安装的 Java 6 替换为 Java 7,哪怕用户的机器上只安装了 Java 6。
因此他这样说,“你应该坚定地考虑关闭 Java 的自动更新”。
InfoQ 请 Citrin 谈了一下他的态度。“实际上我认为用户最好的选择是把浏览器插件升级到最新的 Java 7,”他对我们说,“或者简单地在浏览器中禁止 Java。”关于 Oracle 应该如何处理目前这种状况,他也提了很多建议:
a. 从支持同时安装转变为替换式安装,也就是用 Java 7 替换 Java 6,这需要严格向后兼容较老的版本,如此用户才不会注意到。此时这或许并非很好的选择,但从长期来看可能是最好的解决方案。
b. Java 6 的更新至少再继续提供一段时间。当然这只是拖延时间,无法最终解决问题。
c. 作为 Java 7 更新的一部分,检查用户的 Java 浏览器插件是不是 Java 7。如果不是的话,就切换到 Java 7。这可能是全面解决问题的最好方案。大多数攻击都是通过浏览器进来的,不过大部分人并没有注意到这一点。这种方式有可能什么都不破坏。
事实上 Oracle 已经对更新进程采取了一些防范措施。对企业级用户而言,Java 自动更新进程只更新用户 Windows 机器上最新安装的 Java 版本,这是最重要的。也就是说,如果安装了多个 Java 版本,只有最近安装的那个会被替换掉。此外,在由企业代表用户对 Java 的版本进行管理的地方,通常关闭自动更新,因此他们不会受到影响。即便如此,尽管企业客户应该不会受自动更新的影响,Citrin 也提到,“我们与客户交流时得知,作为独立软件开发商,他们也有些客户报告问题”。
前几天的安全电话会议也讨论了 Java 默默进行自动更新的问题。当然,并非真是默默更新,但正如 Ask 工具栏(译者注:这是 Java 安装程序中提供的默认搜索功能工具栏)的安装一样,用户往往没有仔细阅读就在安装程序中点击通过了,Citrin 在与我们交流时也表达了这种观点。考虑到这一点,回顾一下 Donald Smith 关于自动更新的评论是很有意思的事情:
当然,你会遇到挑战:如果新出现的特性与历史悠久的生态系统中的这一特性工作方式不同,突然就会有很多人问这个问题,“我应该如何避免这种情况发生呢?”
随着 Java 日益成为恶意软件和病毒作者的目标,对 Oracle 来说,鼓励用户更新到最新状态一定是个挑战。
InfoQ 联系了 Oracle 希望得到解答,但他们拒绝发表评论。
查看英文原文: Oracle Will Stop Providing Security Updates for Java 6 Next Month
评论