我正在公司中用 Java 8 编写新项目。我建议使用 Java 8 日期时间 API,但我的一位同事说新的日期时间 API 运行缓慢。
这是真的吗?此外,我想从 Oracle 获得一些官方文档,其中会提到您不应该java.util.Date
在新项目中使用。
开发时java.time.*
,这句话是我想添加的java.util.Date
:
"This class is now effectively deprecated by the Time Framework for Java."
它在源存储库中有一段时间,请参见此处。
但是,此更改被 Oracle 拒绝,因此没有明确弃用java.util.Date
. 但是,所有明智的开发人员通常都应该使用Instant
andjava.time.*
而不是java.util.Date
.
您可以在Oracle 网站上找到答案
简而言之——不,java.util.Date
不推荐使用,但 Oracle 强烈建议使用新java.time
库(他们提到的专业人士可以在上面的链接中找到)。
我想从 Oracle 获取一些官方文档
官方Oracle 教程已用仅涵盖 java.time 类的新材料替换了有关日期和时间的教程。
麻烦的旧日期时间类已从教程中删除,除了一个关于从旧类迁移到现代类的页面。请注意,该页面被明确标记为“<a href="https://en.wikipedia.org/wiki/Legacy_system" rel="nofollow noreferrer">legacy”。
至于性能,我不知道传统类和现代类之间有任何显着差异。
在内部,这些类使用类似的数据、从纪元开始的整数计数和类似的时区信息。因此,我无法想象java.util.Date
和之间的性能差异有多大java.time.Instant
。如果有的话,实际上 java.time 可能会更快,因为它是完全线程安全的,因此您可以缓存和重用值而不是重新生成它们。
即使 java.time 类被证明速度较慢,它们的现代设计、使用的清晰性和结果的正确性也远比一些微小的速度差异重要。
任何指控性能问题的人都应该使用示例代码进行演示。古语有云,“忍不忍”。