Probleme mit Threeten => Time4J

Wie in der zuletzt am 27.9.2012 aktualisierten Übersicht von Datums- und Zeitbibliotheken ersichtlich, ist derzeit die für das JDK 8 vorgesehene Bibliothek Threeten (JSR 310) die am besten zu bewertende. Joda habe ich in jenem Artikel nur deshalb empfohlen, weil sich Threeten noch im alpha-Stadium befindet, also ein (sehr) instabiles API hat.

Um Mißverständnissen bezüglich der weiter unten vorgebrachten Kritiken vorzubeugen, sei eins vorausgeschickt. Zweifelsohne ist Threeten für alle Standardanwendungen in Sachen Zeit meist gut geeignet und in der Mehrzahl der Fälle klar besser als die alten JDK-Klassen, auch besser als Joda. Stephen Colebourne, die treibende Kraft hinter Joda und Threeten, hat über die Jahre wirklich enorme Fleißarbeit verrichtet. Inzwischen gibt es auch einen zweiten Early Draft Review (EDR2) des JSR 310 (Version 0.7). Hier zeigt sich allerdings auch schon die Instabilität des ganzen API, denn wenn man stattdessen direkt in den Quelldateien auf GitHub stöbert, stellt man erhebliche Abweichungen des aktuellen Quellcode-Stands vom EDR2 fest. Es ist also etwas schwierig, alleine auf Basis des EDR2 Bewertungen vorzunehmen. Vieles ist teilweise noch stark im Fluß… Weiterlesen

Datums- und Zeitbibliotheken in Java – eine Übersicht

Zuletzt aktualisiert am 27.09.2012!

Will ich alle jemals existierenden Ansätze und fertige Bibliotheken auflisten, werde ich sicherlich nicht fertig. Die tatsächliche Anzahl ist auch nicht ermittelbar, weil viele Bibliotheken gar nicht öffentlich verfügbar sind. So gibt es in meiner Firma intern eine eigene Datumsklasse und auch eine eigene Uhrzeitklasse, die jeweils als Zustand Jahr, Monat, Tag und Stunde, Minute, Sekunde in Integer-Variablen halten und die Zeitrechnung an das JDK (java.util.GregorianCalendar) delegieren.

Bibliotheken, die lediglich die JDK-Kalenderklassen ummanteln und so einige unschöne Details verstecken und nach außen verbessern, gibt es in Unmengen. Auf diese Art und Weise kann z.B. die vielfach kritisierte Zählung des JDK von Monaten ab 0 (Januar) statt 1 (in der Umhüllung) leicht geändert werden. Eine unsortierte Mini-Auswahl von Open-Source-Bibliotheken dieses Typs sind zum Beispiel:

Ich möchte daher das Thema etwas anders formulieren: Wieviele eigenständige Bibliotheken gibt es, die alle wesentlichen Aspekte einer Zeitbibliothek selbst behandeln, ohne an das JDK zu delegieren und daher auch stand-alone verwendet werden können? Die folgende Übersicht behandelt genau diese. Es sind überraschend wenige, nämlich (nach meinem Kenntnisstand) nur 6, das JDK eingeschlossen! Wer nach dem Kriterium der Eigenständigkeit noch mehr solche Bibliotheken kennt, möge sie mir gerne mitteilen.

  • JDK – java.util.Calendar, sun.util.calendar-Paket etc.
  • JodaTime von Brian O’Neill und Stephen Colebourne
  • ICU-Projekt von IBM
  • JSR 310 (Threeten) von Stephen Colebourne, Michael N. Santos und Roger Riggs
  • BigDate von Roedy Green (Quellcode hier)
  • DATE4J von John O’Hanley

Weiterlesen