Oracle 是否有官方文档说我们不应该在新项目中使用 java.util.Date

Is there official documentation by Oracle saying we should not use java.util.Date in new project

我在Java8公司写新项目。我建议使用 Java 8 日期时间 API 但我的一位同事说新日期时间 API 工作缓慢。

这是真的吗?另外我想从 Oracle 获得一些官方文档,其中会提到你不应该在新项目中使用 java.util.Date

您可以在 Oracle 网站上找到答案 here

简而言之——不,java.util.Date 没有被弃用,但 Oracle 强烈建议使用新的 java.time 库(提到它们的优点,您可以在 link 以上)。

开发java.time.*的时候,这句话是我想加在java.util.Date上的:

"This class is now effectively deprecated by the Time Framework for Java."

它在源存储库中有一段时间了,参见 here

但是,此更改被 Oracle 拒绝,因此没有明确弃用 java.util.Date。但是,所有明智的开发人员通常应该使用 Instantjava.time.* 而不是 java.util.Date.

Oracle 教程

I want to get some official documentation from Oracle

官方Oracle Tutorials has replaced the tutorial on date-and-time与新的material仅涵盖java.time类。

现在是“遗产”

麻烦的旧日期时间 类 已从教程中删除,除了 page on migrating from the old classes to the modern classes. Note that the page is explicitly labeled as ‘legacy'。

性能

至于性能,我不知道旧版和现代版之间有什么显着差异 类。

在内部,类 使用类似的数据、从纪元开始的整数计数和类似的时区信息。所以我无法想象 java.util.Datejava.time.Instant 之间的性能有什么大的差异。如果有的话,实际上 java.time 可能更快,因为它是完全线程安全的,因此您可以缓存和重用值而不是重新生成它们。

即使 java.time 类 被证明速度较慢,但​​它们的现代设计、使用的清晰度和结果的正确性 比一些次要速度更重要区别。

任何声称存在性能问题的人都应该使用示例代码进行演示。俗话说,“要么忍,要么闭嘴”。