Come ormai molte persone sono dolorosamente consapevoli, l'API Java per la gestione delle date del calendario (in particolare le classi java.util.Date
e java.util.Calendar
) è un pasticcio terribile.Perché l'API della data Java (java.util.Date, .Calendar) è un problema?
Fuori della parte superiore della mia testa:
- Data è mutevole
- Data rappresenta un timestamp, non una data
- un modo semplice per la conversione tra i componenti data (giorno, mese, anno .. .) e data
- Calendar è goffo da usare, e cerca di combinare diversi sistemi di calendario in una sola classe
This post lo riassume abbastanza bene e anche lo JSR-310 espande questi problemi.
Ora la mia domanda è:
Come ha fatto queste classi riuscire ad entrare nella Java SDK? La maggior parte di questi problemi sembra abbastanza ovvia (in particolare Data è mutevole) e avrebbe dovuto essere facile da evitare. Quindi come è successo? Pressione del tempo? O i problemi sono evidenti solo a posteriori?
Mi rendo conto che questa non è una domanda di programmazione, ma troverei interessante capire come il design dell'API potrebbe andare così male. Dopotutto, gli errori sono sempre una buona opportunità di apprendimento (e sono curioso).
Una doppia negazione è sempre di cattivo gusto ... Date è mutabile, non data non è immutabile. –
Speriamo che le nuove API Date e Time di JSR-310, basate su Joda-Time, verranno fornite in Java 7. –
E DateFormat non è progettato per essere thread-safe ... (http://bugs.sun.com /bugdatabase/view_bug.do?bug_id=4093418) – Arjan