java - 为什么 Java 8 u31 中不再有时区文件?

标签 java timezone java-8

在 Java 8 (jdk1.8.0_32) 中,不再有时区文件(在 jre/lib/zi 下),例如Java 7u67。

有谁知道,为什么他们不在那里?

还是需要下载不同的设置?我使用了 JDK 安装程序 (jdk-8u31-windows-i586 resp.x64.exe)。

最佳答案

更详细地说,从 1.8 版开始从 Java 版本中删除 lib/zi 目录的动机显然是为了减轻维护负担。 1.4 中引入的 lib/zi 目录和 1.8 中引入的新 tzdb.dat 文件在维护方面成本过高而无法继续。另请参阅来自 JSR-310-mailing archive 的邮件.

另一个原因是 JEP 151 中制定的动机其目标是减少 lib/zi-library 的内存占用和启动时间。这个目标最终通过放弃 lib/zi 库来支持更紧凑的新 tzdb.dat 文件来解决,该文件的大小约为 100 kByte。

还要记住,旧的 lib/zi 结构已经生成了直到 2037 年的偏移量转换。这种限制源于使用有限的整数类型,所以在不久的将来整个结构已经过时并且如果 Oracle 决定保留它,则需要进行一般重构。

关于java - 为什么 Java 8 u31 中不再有时区文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28879895/

相关文章:

java - 从 Android 首选项设置铃声不起作用

Java IO 性能问题

java - 新的 javadoc 注释 @apiNote

Java forEach 中的逗号 ","

java - 使用 Stream.reduce 求逆和不正确

java - 将 JSON 响应映射到 POJO(使用不同的名称)

java - WebLogic 12c 中的 Resteasy(或不是 Jersey - JAX RS 实现)可能吗?

ruby-on-rails - activerecord 和时区

java - 在另一个 TimeZone 中解析格式化的日期字符串到日期对象不起作用

database - 夏令时期间的generate_series变化 - 根据服务器时区不同结果不同