赶紧重写 Java 的时间和日期 API 吧!

最近 Java.net 的投票问题是:“在 Java 8 中实现 JSR-310(新的 Java 日期和时间 API)有多么重要? ”在这篇帖子发布的时候,对该话题已经有超过 150 条回应。其中“觉得非常重要”(53%),“重写当然更好,使用当前的 API 也不错”(22%)这两种观点以压倒性比例盖过了其他各种意见。

显然,对于重写 Java 时间和日期 API 这件事情,有四分之三的回复者认为,“重写更好”或者“重写很重要”。我的观点同大多数人一样,我认为如下的说法并不为过:“Java 当前的 Date 类和 Calendar 类提供的方法并没有和广大开发者一同进步。”到目前我感到最惊奇的就是,居然有2% 的人选择了“我宁愿使用当前的时间和日期类”,我都不禁怀疑,是不是这些 API 的作者们投了这2% 的票呢?

赶紧重写 Java 时间和日期 API 吧!

我多次使用过Java的日期/时间/日历 API。当我用它们的时候,我真的不喜欢它们,但是我强迫自己学会容忍他们。有的时候我甚至忘记了这些 API 有多么恶心,直到我再次使用他们为止。我最近帮助过我的一个熟悉Java(但是不熟悉时间和日期 API)的同事,企图让他学会如何使用 Date/Calendar/String 类进行配置和显示。把这些乱七八糟的东西给他讲清楚是如此的困难,因为利用这些过于灵活的 API 写程序,对我自己来说本身就困难重重。从我同事的脸上,我看到了迷惑的表情,他一定认为我要么在跟他开玩笑,要么就是我自己都不明白自己在说什么。尽管我 可以让这些 API 按照我的意图工作,但是其难度远远超出了其应有的水平。

也有很多其他人表达了对使用 Java 时间/日期 API 所感到的痛苦。Rob Sanheim 在 2006 年提出了时间和日期 API 的问题,并将其纳入“最烂的 5 个 Java API”的范畴(Calendar、Date 和 DateFormat/SimpleDateFormat)。2005年,Cameron Purdy 的文章《七个可能造成功能性障碍的设计习惯》,把 Java 的日期处理 API 推上了风口浪尖。Tero Kadenius 在 2011 年的文章《Java 中的日期处理》再次提醒我们:“众所周知,使用 Java 时间日期 API 写程序是如此地痛苦。”2009年的一篇名为《Java 日期如此糟糕》的帖子,可谓是名符其实。

目前 Java.net 的调查结果应证了我的观点和大部分 Java 开发者是相同的。在阅读了大量的文章和博客后,我发现,绝大多数的 Java 开发这都迫切希望看到在 Java 中能出现一套更好的处理时间和日期的 API。

英文原文:javacodegeeks   编译:伯乐在线 – 黄小非