Получить доступ

Почему java.time (Java 8) предпочитают старым Date/Calendar?

JuniorДата и время
Коротко

java.time (Java 8) неизменяем, потокобезопасен и с явной моделью: Instant, LocalDate, LocalTime, ZonedDateTime, Duration, Period. Date и Calendar изменяемы, месяцы с нуля, SimpleDateFormat не потокобезопасен, Date смешивает момент и представление.

  • Новый код — только java.time
  • Старые API — конвертировать на границе: date.toInstant(), Date.from(instant)
  • JDBC 4.2, JPA 2.2, Jackson поддерживают java.time

А ещё Основан на Joda-Time (JSR-310)

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Старые Date/Calendar изменяемы и не потокобезопасны: у Calendar месяцы с нуля, SimpleDateFormat нельзя шарить между потоками, большая часть Date устарела. java.time (JSR-310) разделяет момент, дату, время и зону, все типы неизменяемы и потокобезопасны, API текучий и предсказуемый — это стандарт для нового кода.

Что хотят услышать

  • Проблемы старого API.
  • Преимущества java.time.

Частые ошибки

  • Использовать SimpleDateFormat как общий static (он не потокобезопасен).
  • Забывать, что в Calendar январь = 0.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Типы java.time неизменяемы и потокобезопасны, с явной моделью (Instant/LocalDate/ZonedDateTime); Date/Calendar изменяемы и с ловушками (месяцы с 0, не потокобезопасный SimpleDateFormat)
  • ✗java.time быстрее, но так же изменяем, как Date
  • ✗Date удалён из JDK, альтернатив нет
  • ✗java.time — это обёртка над Calendar с теми же проблемами

Что спросят дальше

  • Какие основные типы есть в java.time?
  • Как навести мост со старым Date?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем