为什么Java 8 u31中没有更多的时区文件



在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邮件归档中的这封邮件。

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

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

Java 8引入了日期和时间API,这可能会使这些文件过时。

相关内容

  • 没有找到相关文章