Fortschritte in Time4J

Eine lange Zeit ist seit meinem letzten Blog-Artikel verstrichen, weil ich all meine freie Zeit in das Time4J-Projekt gesteckt habe. Viele Versionen sind veröffentlicht worden. Heute habe ich die Versionen 3.1 und 4.0 veröffentlicht.

Die Versionslinien 1.x und 2.x sind mittlerweile veraltet und als Experimentierphase zu werten, weil sich das Design der Version 1.0 aus guten Gründen doch inkompatibel ändern musste.

  • Die Versionsline 1.x hatte keine saubere Trennung zwischen lokalen und globalen Typen.
  • Die Versionslinie 2.x war in ihrem Kern für Android einfach zu groß.

Aber die Versionslinien 3.x für Java 6+7 (und in Zukunft Android) sowie die neue Versionsline 4.x für Java 8 sind jetzt ausgereift und stabil. Inkompatible Änderungen habe ich in Zukunft nicht mehr vor. Das ist nun in Stein gemeißelt.

Die neue Version v4.0, so kann man mit gutem Recht feststellen, hat nun endgültig die so vielgerühmte Joda-Time-Bibliothek und auch die in Java-8 eingebaute Zeitbibliothek (JSR-310) überholt, was die Anzahl und Qualität der unterstützten Features angeht. Lediglich einige Kalendersysteme fehlen im Vergleich.

Was fehlt noch? Gibt es ein Problem? Tja, Time4J ist noch so gut wie unbekannt, auch weil ich so gut wie nicht die Werbetrommel gerührt habe, sondern nur auf die Entwicklung fokussiert war. Und ein Marketing-Profi bin ich nicht, muß ich offenherzig bekennen. Trotzdem bekenne ich mich weiterhin zur Pflege und Weiterentwicklung dieser jetzt schon formidablen Bibliothek. Es gibt noch viel zu tun. Die Bibliothek ist bei weitem nicht fertig. Ich habe noch sehr viele Ideen. Allerdings werde ich jetzt die (extreme) Entwicklungsgeschwindigkeit verlangsamen, weil meine Gesundheit und meine Familie nicht weiter vernachlässigt werden dürfen.

 

Unterstützung für Apache Maven in Time4J

Die neue Version v1.1 von Time4J bietet nun direkte Unterstützung für Apache Maven dank der integrierten pom-Dateien, auch ist die neue Version endlich im Maven Central Repository verfügbar. Der Funktionsumfang ist im Vergleich zu v1.0 praktisch gleich geblieben.

Für alle Anwender, die NICHT Maven als build-Tool verwenden, gibt es den folgenden Link zum Download:

https://github.com/MenoData/Time4J/releases/tag/v1.1

Time4J-Kern fertig

Gerade ist die neue Version v1.0 von Time4J in ihrem Kern fertig. Sie ist unter der Lizenz LGPLv2.1 erhältlich (die gleiche Lizenz wie sie Wildfly (früher JBoss) verwendet). Diese Version ist nunmehr produktionsreif erhältlich. Folgender Link kann für den Download verwendet werden:

Release v1.0

Und die nächsten Aufgaben warten schon: Intervalle und Formatierung von Zeitdauern (milestone M3).

Time4J endlich erschienen

Lange angekündigt, ist meine Java-Datums-und Zeitbibliothek Time4J in der Version v0.1-alpha veröffentlicht worden. Wo? Zu finden auf:

http://github.com/MenoData/Time4J

Zweieinhalb Jahre harter Arbeit liegen da hinter mir, und meine Familie hat schon einige Male ganz schön geseufzt. Aber ich denke, das Ergebnis kann sich sehen lassen, auch wenn natürlich dieser Erstversion noch einige Features fehlen. Und nach der Arbeit ist bekanntlich vor der Arbeit. Die Entwicklung bleibt nicht stehen, sondern geht selbstverständlich weiter. Schwerpunkt des nächsten Release v0.2-alpha werden die Umstellung der Dokumentation auf Englisch, extra Tutorials und mehr Zeitzonen-Features sein.

Kleine Verzögerung

Status

Seit einiger Zeit nichts mehr geschrieben, die Sommerpause war lang. Das heißt aber nicht, daß ich untätig war. Einige extreme private Umstände in meinem Umfeld (neues Baby, Krankenhausaufenthalte etc.) haben dazu geführt, daß ein Ein-Mann-Projekt wie Time4J nicht mit den gleichen hohen Anstrengungen wie vorher weitergeführt werden konnte. Konkret bedeutet das erst mal nur, daß das erste Release nicht wie angekündigt im Spätsommer/Herbst erscheinen kann. Ich hoffe aber immer noch, daß es spätestens im Dezember klappt, wenn auch nur mit einem an Features reduzierten Release.

An der Tatsache, daß ich leider nur relativ wenig Zeit in das Projekt investieren kann, wird sich wegen meiner privaten Situation so schnell nichts ändern. Darum werde ich auch demnächst wenig bis gar nichts bloggen, sondern lieber meine wenige vorhandene Zeit in Time4J stecken so gut es geht. Eine Ausnahme werde ich aber machen, wenn der “Public Draft Review” (PDR) des JSR 310 erscheint. Die neue Zeitbibliothek des JDK von Oracle und Stephen Colebourne steht kurz vor dem Abschluß. Dazu werde ich eine ausführliche Stellungnahme im Blog abgeben, fest versprochen.

Endet der Maya-Kalender? Nein, in Time4J wird er weiterleben!

Pünktlich zum von Esoterikern postulierten Weltuntergangstag am 21. Dezember 2012 endet die von den meisten Wissenschaftlern und Archäologen angewandte sogenannte Lange Zählung des Maya-Kalenders (englisch: long count). Ja, eventuell sehen das manche Esoteriker das sogar als “Beweis” für ihre Weltuntergangsphantasie an. Wie auch immer, die Maya haben nach neueren archäologischen Funden wohl schon darüber hinausgezählt. Interessant hierzu auch das Interview mit dem deutschen Archäologen und Maya-Forscher Nikolai Grube. Also keine Angst vor dem Weltuntergang.

Ist damit der alte Maya-Kalender beendet? Im historischen Sinne nach dem Kriterium des alltäglichen Gebrauchs ist er es schon längst. Aber ich habe beschlossen, ihn ein winziges Stück weit für historisch Interessierte weiterleben zu lassen. In meinem Projekt Time4J – eine neue Datums- und Zeitbibliothek geschrieben in der Programmiersprache Java – wird es auch eine MayanDate-Klasse geben. Kalendarische Grundlage wird der englischsprachige Eintrag zum Maya-Kalender in Wikipedia sein. Wie dort schön zu sehen ist, sind die kalendarischen Algorithmen des Kalenders erstaunlich einfach, deutlich einfacher jedenfalls als im modernen ISO-8601-Kalender. Um so mehr erstaunt es, daß z.B. eine so renommierte Bibliothek wie Joda Time so eine Komponente nicht hat. Nicht einmal eine externe Bibliothek mit dem Maya-Kalender basierend auf Joda Time scheint es da zu geben. Das einzige, was ich im Internet gefunden habe, ist ein kleines Applet zum Thema. Da bietet Perl mehr! Höchste Zeit, diesem Mangel von Java abzuhelfen.

Wann ist damit real zu rechnen? Insgeheim hatte ich gehofft, daß Time4J pünktlich zum Weltuntergangstag seine Geburt erleben sollte. Aber manchmal dauern Wunder ein wenig länger, gerade bei der Komplexität der anderen weit wichtigeren Kalendersysteme, die auch zu implementieren sind. Ich glaube eher an Spätsommer 2013. Also noch ein wenig Geduld bitte, verehrte Leser.

Name für eine Datumsklasse

Der am natürlichsten wirkende Name “Date” ist bereits seit Java 1.0 durch die Klasse java.util.Date besetzt. Damit in Java-Programmen keine Namenskonflikte entstehen, die nur durch umständliche Zusatzangaben von Paket-Qualifizierern aufgelöst werden können, besteht die Notwendigkeit, wenigstens für die elementarsten und häufig verwendeten Klassen einer JDK-Erweiterung oder externen Bibliothek Namen zu wählen, die noch nicht vergeben sind. Weiterlesen