Oracle 在标准 JDK 发布周期之外停止提供免费的 Java Time Zone 更新,此举在网上闹得沸沸扬扬。然而就在 10 号,Oracle 的心可能又变了。
截至今年 3 月之前,Oracle 和之前的 Sun 都提供了免费的 TZUpdater 工具,该工具允许开发者更新给定版本 JDK 的时区信息,而无须更新 JDK 本身。然而就在今年 3 月底 Java 6 服务周期结束(到达 End Of Life 状态)的同时,Oracle 也通过一则支持协议限制了用户对该工具的使用,这不仅影响了 Java 6 用户,也影响了 Java 7 用户。
这无疑是种倒退。Java Time Zone 更新包含在 JDK 每年计划中的六次更新中,但这远不如时区数据的更新来得频繁,这从 TZUpdater 的版本列表也看得出来。“政治实体可能一时兴起就随时修改时区,而且往往是不会给出任何通知的”,JSR-310 和 Joda-Time 的领导者 Stephen Colebourne 这样说。“在世界的某些部分,这尤其是个问题,而美国和欧盟受的影响就微乎其微。”
此外,TZUpdater 的移除意味着,除非更新整个 JDK,否则开发者是无法给时区数据打补丁的,对很多企业而言这是个很大的负担。Colebourne 指出:“我想很多开发者会希望可以选择只更新时区数据,而不是被强迫去更新整个 JDK(这有很大风险)。”他还补充道:
Joda-Time 未受影响,因为它有自己的时区数据,独立于 JDK 进行解析,而且可由用户更新。然而 JSR-310 被集成到了 JDK 8 中,因此会受到影响。理想的情况是,JDK 中的数据可以随时被正确替换,尽管 JSR-310 支持,但我还没有成功实现。
The Server Side 于 6 月 7 日报道了这则消息,Oracle 的员工 Cameron Purdy 和 Donald Smith 含蓄地指出这是有意为之。Purdy 援引了 Oracle 内部的一条响应,写道:
每次交付新的 Java 更新时(每年 6 次),我们也会定期更新时区数据,而且 Java 的最新版本总是免费的。
我们认为,对于我们长期支持的客户而言,Tzupdater 也是一个支持工具。作为一种为 Java 开发提供资金的方式,我们确实对支持收费了。我们没有专门为 Tzupdater 收费,它只是我们整体支持产品的一部分。
然而当 InfoQ 联系 Oracle 以确认这则消息时,看起来他们的想法已经变了。Oracle 告诉我们:
我们从来没有想过将 JDK 7 更到最新还需要支持协议。3 月 8 日 TZUpdater 不再可用,这是 JDK 6 终止公开更新的一部分。当我们了解到这会影响 JDK 7 用户,我们马上启动了使之可以再次应用于 JDK 7 的进程。
Oracle 在一篇博客中补充道:
对于我们引起的混乱和不便,我们向 Java 社区中所有受此影响的人致歉,我们也非常感谢直接联系我们、让我们注意到此问题的人。一些 Java 用户组的领导者和 Java Champion 一如既往地勤勉和乐于助人,特别是 Stephen Colebourne,他从社区角度提供了详细的、很有帮助的技术分析。
Colebourne 告诉我们:
我想 Oracle 一旦理解了问题所在就会很快做出反应。随着其策略的逆转,我们会回到可以正常工作的系统。
不管这是错误还是阴谋,Oracle 恢复了 TZUpdater,这是好消息。Oracle 能面对风暴快速反应,也是值得肯定的。
评论