Почему API даты Java (java.util.Date, .Calendar) такой беспорядок?
Как многие люди до сих пор до боли осведомлены, Java API для обработки календарных дат (особенно классовjava.util.Date
а такжеjava.util.Calendar
) ужасный беспорядок.
С верхней части моей головы:
Дата изменчиваДата представляет собой метку времени, а не датунет простого способа преобразования между компонентами даты (день, месяц, год ...) и датойКалендарь неудобен в использовании и пытается объединить разные календарные системы в один классЭта почта суммирует это довольно хорошо, иJSR-310 также исчезает эти проблемы.
Теперь мой вопрос:
Как эти классы попали в Java SDK? Большинство из этих проблем кажутся достаточно очевидными (особенно это касается того, что Date может быть изменяемым), и его было легко избежать. Так как же это случилось? Время поджимает? Или проблемы очевидны только в ретроспективе?
Я понимаю, что это не просто вопрос программирования, но мне было бы интересно понять, как дизайн API может пойти не так. В конце концов, ошибки - это всегда хорошая возможность для обучения (и мне любопытно).