我正在公司用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
和java.time.*
而不是java.util.Date
。
您可以在Oracle网站上找到答案
这里简而言之 - 不,java.util.Date
没有被弃用,但Oracle强烈建议使用新的java.time
库(您可以在上面的链接中找到它们提到的优点(。
Oracle 教程
我想从甲骨文那里获得一些官方文档
官方的 Oracle 教程已经用仅涵盖 java.time 类的新材料取代了日期和时间教程。
现在的"遗产">
麻烦的旧日期时间类已从教程中删除,除了从旧类迁移到现代类的页面。请注意,该页面被明确标记为"旧版"。
性能
至于性能,我不知道传统课程和现代课程之间有任何显着差异。
在内部,这些类处理相似的数据、整数从纪元计数和类似的时区信息。所以我无法想象java.util.Date
和java.time.Instant
之间的性能有什么很大的差异。如果有的话,在实践中java.time可能会更快,因为它是完全线程安全的,因此您可以缓存和重用值,而不是重新生成它们。
即使java.time类被证明较慢,它们的现代设计以及使用的清晰度和结果的正确性也比一些微小的速度差异重要得多。
任何声称存在性能问题的人都应该使用示例代码进行演示。俗话说,"要么忍,要么闭嘴"。