1. ホーム
  2. java

[解決済み] Java日付と時間クラスを使うべきか、Joda Timeのようなサードパーティライブラリを使うべきか?

2022-05-08 16:37:40

質問

世界中の国々で使われるウェブベースのシステムを作っています。保存しなければならないデータの1つは、日付と時間です。

Java の日付と時刻のクラスを使用する利点と欠点は、次のようなサードパーティのライブラリと比較してどうでしょうか。 ヨーダ時間 ? これらのサードパーティライブラリは、それなりの理由があって存在しているのだと思いますが、私自身はあまり比較したことがありません。

解決方法は?

EDIT: Java 8がリリースされたので、それを使えるなら使いましょう! java.time は、Joda Timeよりさらにクリーンだと私は思います。しかし、もしあなたがJava-8以前に行き詰っているのなら、続きを読んでください...。

マックスはJodaを使うことの長所と短所を聞いてきました...。

長所

  • とてもよく動きます。Jodaには、標準的なJavaライブラリよりもはるかに少ないバグがあるのではないかと強く思っています。Javaライブラリのバグのいくつかは、設計上、修正するのが本当に難しいです(不可能ではないにしても)。
  • 日付や時間の処理について、正しい方法で考えるように設計されています。つまり、ローカルタイム(例:どこにいても午前7時に起こしてくれ)とインスタントタイム(例:午後3時にJamesに電話している、彼がいるところは午後3時ではないかもしれないが、同じ瞬間だ)の概念を分離するのです。
  • タイムゾーンデータベースの更新が容易になると思いますが、これは する 比較的頻繁に変更される
  • 不滅のストーリーをしっかり持っているので、人生を ロット IMEが楽になる。
  • 不変性に続いて、すべてのフォーマッタがスレッドセーフであることは素晴らしいことです。 常に 一つのフォーマッタをアプリケーション全体で再利用したい。
  • を先取りして学ぶことができます。 java.time は、少なくともある程度似ているため、Java 8 の

短所

  • 別のAPIを学ぶ必要がある(ただし、ドキュメントはかなり充実している)
  • ビルドとデプロイに必要なライブラリが1つ増える。
  • Java 8を使用する場合、スキルの移行作業が残っています
  • を使いこなせなかった DateTimeZoneBuilder を効果的に使うことができます。これは 非常に しかし、稀な使用例です。

oxbow_lakes氏の、小さなAPIを効果的に自作するという考えに対して、なぜこれが悪いのかについて私の見解を述べます。

  • それは仕事です。すでにされていることなのに、なぜするのでしょうか?
  • あなたのチームの新人は、あなたの自作APIよりもJodaに精通している可能性が高いです。
  • 最もシンプルな使い方以外では、間違う可能性が高い。 を考える シンプルな機能しか必要としないのに、少しずつ複雑になっていく習性があるんです。日付と時刻の操作は ハード を適切に行う必要があります。さらに、組み込みのJava APIは難しいので 使用 カレンダーAPIの日付/時刻の演算の動作ルールを見ればわかるように、適切に動作します。これらの上に何かを構築することは、最初によく設計されたライブラリを使用するよりも、むしろ悪い考えです。