Почему API даты Java (java.util.Date, .Calendar) такой беспорядок?

Как многие люди до сих пор до боли осведомлены, Java API для обработки календарных дат (особенно классовjava.util.Date а такжеjava.util.Calendar) ужасный беспорядок.

С верхней части моей головы:

Дата изменчиваДата представляет собой метку времени, а не датунет простого способа преобразования между компонентами даты (день, месяц, год ...) и датойКалендарь неудобен в использовании и пытается объединить разные календарные системы в один класс

Эта почта суммирует это довольно хорошо, иJSR-310 также исчезает эти проблемы.

Теперь мой вопрос:

Как эти классы попали в Java SDK? Большинство из этих проблем кажутся достаточно очевидными (особенно это касается того, что Date может быть изменяемым), и его было легко избежать. Так как же это случилось? Время поджимает? Или проблемы очевидны только в ретроспективе?

Я понимаю, что это не просто вопрос программирования, но мне было бы интересно понять, как дизайн API может пойти не так. В конце концов, ошибки - это всегда хорошая возможность для обучения (и мне любопытно).

Ответы на вопрос(4)

Ваш ответ на вопрос