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 许可的代码