我正在公司的Java 8中编写新项目。我建议使用Java 8日期时间API,但我的一位同事说新的日期时间API运行缓慢。
这是真的吗?另外,我想从Oracle获得一些官方文档,它们会提到你不应该在新项目中使用java.util.Date
。
答案 0 :(得分:11)
开发java.time.*
时,我想将此短语添加到java.util.Date
:
"This class is now effectively deprecated by the Time Framework for Java."
有一段时间它在源存储库中,请参阅here。
但是,Oracle拒绝了此更改,因此java.util.Date
没有明确弃用。但是,所有合理的开发人员通常应使用Instant
和java.time.*
代替java.util.Date
。
答案 1 :(得分:5)
您可以在Oracle网站here
上找到答案简而言之 - 不,java.util.Date
不被弃用,但Oracle强烈建议使用新的java.time
库(他们提到的专业人员可以在上面的链接中找到)。
答案 2 :(得分:3)
我想从Oracle获得一些官方文档
官方Oracle Tutorials已将tutorial on date-and-time替换为仅涵盖java.time类的新材料。
从教程中删除了麻烦的旧日期时间类,除了从旧类到现代类的page on migrating之外。请注意,该网页明确标记为“legacy”。
至于表现,我不知道传统课程和现代课程之间有任何显着差异。
在内部,这些类使用类似的数据,整数计数从纪元和类似的时区信息。因此,我无法想象java.util.Date
和java.time.Instant
之间的性能差异。如果有的话,实际上java.time可能更快,因为它完全是线程安全的,所以你可以缓存和重用值,而不是重新生成它们。
即使java.time类被证明速度较慢,它们的现代设计和使用清晰度以及结果的正确性远比一些小的速度差异更重要。
任何声称性能问题的人都应该使用示例代码进行演示。正如那句老话:“竖起,或闭嘴”。