Die neue Date/Time-API in Java 8

Seite 3: Fazit

Inhaltsverzeichnis

Design und API des JSR 310 sind gut gelungen. Solch eine API hätte man sich schon vor 10 oder 15 Jahren gewünscht. Und eben das ist durchaus ein Problem: Denn nur die wenigsten Softwareentwicklungsprojekte können auf der grünen Wiese anfangen und müssen sich stattdessen mit Altcode auseinandersetzen. Date, Calendar und die anderen Alt-API-Klassen sind und bleiben also noch weit verbreitet.

Gleiches gilt für Bibliotheken wie den OR-Mapper Hibernate oder JPA, die für Datumswerte ebenfalls auf die JSR-310-Klassen wechseln sollten – was wiederum Migrationsaufwände im Anwendungscode verursachen wird.

So wird ein Java-Entwickler noch lange Adapter-Klassen einsetzen müssen, die Daten von der Alt-API (Date, Calendar) in die neue java.time-API beziehungsweise zurück transformieren. Etwas Unterstützung gibt es dabei schon in Java 8:

// Weihnachten (Dezember ist Monat 11!)
java.util.Calendar xmas = new GregorianCalendar(2013, 11, 24);
java.time.Instant i1 = xmas.toInstant(); // alt->neu

java.util.Date now = new Date();
java.time.Instant i2 = now.toInstant(); // alt->neu
java.util.Date now2 = Date.from(i2); // zurueck

java.util.GregorianCalendar g1= (GregorianCalendar) xmas;
java.time.ZonedDateTime z = g1.toZonedDateTime(); // alt->neu
java.util.GregorianCalendar g2= GregorianCalendar.from(z); //zurueck

Nun hat der JSR 310 noch eine weitere separate API eingeführt und die anderen nicht abgelöst. Das Problem, dass damit verschiedene Datum- und Zeit-APIs parallel im JDK angeboten und in Benutzung sind, wird also eher verschärft. Hinsichtlich der zukünftigen Modularisierung der Java-Plattform und -APIs ist also die reine Hinzunahme der "neuen Welt" ohne Konsolidierung oder Ablösung der "alten" folglich auch kritisch zu sehen. Dies löst vielleicht die geplante Modularisierung in Java 9 auf.

Bis dahin haben Entwickler zumindest erst mal eine gut nutzbare API fĂĽr Datums- und Zeitrechnung. Und das ist angesichts der skizzierten Historie eine ganze Menge.

Martin Lehmann
ist Diplom-Informatiker und als Cheftechnologe und Softwarearchitekt bei der Accso – Accelerated Solutions GmbH tätig. Seit Ende der 90er-Jahre arbeitet er in der Softwareentwicklung in diversen Projekten der Individualentwicklung für Kunden verschiedener Branchen.
(ane)