Skip to content

JEP 150: Date & Time API | 日期和时间 API

摘要

这个项目旨在为 Java SE 平台定义一个新的日期、时间和日历 API。

目标

  • 支持标准的时间概念,包括日期、时间、即时和时区
  • 使用不可变的实现
  • 提供适用于 JDK 的有效 API,专注于开发人员的可用性
  • 与现有的 JDK API 集成
  • 提供一组有限的日历系统,并可扩展到其他日历系统
  • 使用相关的标准,包括 ISO-8601、CLDR 和 BCP47
  • 基于明确的时间标度,并与 UTC 有关联

非目标

解决所有日期 / 时间问题并不是一个目标,但新的 API 应该是外部扩展的合适基础。

动机

现有的 Java 日期和时间类质量较差,可变性强,性能不可预测。长期以来,大家一直希望基于 Joda-Time 项目建立一个更好的日期和时间 API。新的 API 将具有更直观的设计,能更好地表达代码的意图。这些类还将是不可变的,与行业的多核方向保持一致。

描述

JSR 310 EG 一直在为 Java 平台开发一个新的日期 / 时间 API。该项目的目标是将 JSR 310 参考实现 整合到 JDK 8 中。

整合将涉及与任何新的模块化系统的成功配合。可能需要为核心嵌入式和移动模块提供一部分功能的子集。

该项目还要求将 JSR 310 类与现有的类集成。例如,在 JDK 中只应该有一个时区数据源。还打算让现有的格式化器支持新的类。

测试

除了正常的单元 / 回归测试开发之外,没有特定的要求。JSR 310 已经开发了一个庞大的测试套件,正在将其分为 TCK 和非 TCK 测试。

风险和假设

该项目主要由非 Oracle 人员实施,他们没有全职从事这个项目的资金支持。

需要对不可变性和线程安全性进行审查并进行假设。

依赖

  • 当前没有对 Project Lambda 的依赖,但在整合过程中可能会发生变化。

  • 整个 JDK 的模块化系统设计将影响 JSR 310 的设计。

影响

  • 其他 JDK 组件:应该审查其他 API,看它们是否可以使用 JSR 310 类
  • 兼容性:新代码和一些现有类上的新方法
  • 安全性:预计没有影响
  • 国际化 / 本地化:可能需要额外的 i18n 框架来更好地支持非公历日历
  • 可移植性:基本工作不需要额外的本机代码,但更精确的系统时钟是可取的
  • 文档:标准的 javadoc 和示例,可能还需要更新教程 / 指南
  • TCK:新的 JCK 测试开发
  • 法律问题:整合来自 JSR 310 的 BSD 3-clause 许可的代码