JEP 150: Date & Time API
API даты и времени
| Автор | Stephen Colebourne |
| Ответственный | Xueming Shen |
| Тип | Feature |
| Область | SE |
| Статус | Closed / Delivered |
| Выпуск | 8 |
| Компонент | core-libs |
| JSR | 310 |
| Обсуждение | core dash libs dash dev at openjdk dot java dot net |
| Трудоёмкость | L |
| Длительность | L |
| Блокирует | JEP 170: JDBC 4.2 |
| Duplicates | JEP 151: Compress Time-Zone Data |
| Одобрен | Brian Goetz |
| Создан | 2012/02/22 20:00 |
| Обновлён | 2015/01/22 17:18 |
| Задача | 8046140 |
Аннотация
Определить новый API даты, времени и календарей для платформы Java SE.
Цели
- Поддержка стандартных понятий времени, включая дату, время, момент времени (instant) и часовой пояс
- Неизменяемые реализации
- Предоставить эффективный API, подходящий для JDK и ориентированный на удобство разработчиков
- Интеграция с существующими API JDK
- Предоставить ограниченный набор календарных систем с возможностью расширения на другие
- Использовать соответствующие стандарты, включая ISO-8601, CLDR и BCP47
- Основываться на явно заданной шкале времени, связанной с UTC
Что не является целью
Цель не в том, чтобы решить все задачи, связанные с датой и временем, но новый API должен стать подходящей основой для внешних расширений.
Мотивация
Существующие классы даты и времени в Java неудачны, изменяемы и обладают непредсказуемой производительностью. Давно существует потребность в более удобном API даты и времени на основе проекта Joda-Time. У нового API будет более интуитивный дизайн, благодаря которому код сможет лучше выражать своё намерение. Классы также будут неизменяемыми, что соответствует ориентации отрасли на многоядерность.
Описание
Экспертная группа JSR 310 работает над новым API даты и времени для платформы Java. Цель этого проекта — интегрировать эталонную реализацию JSR 310 в JDK 8.
Интеграция потребует успешной совместной работы с любой новой модульной системой. Может понадобиться предусмотреть модуль для core embedded и мобильных платформ с подмножеством функциональности.
Проект также потребует интеграции классов JSR 310 с существующими классами. Например, в JDK должен быть только один источник данных о часовых поясах. Также предполагается, что существующие средства форматирования будут поддерживать новые классы.
Тестирование
Особых требований, помимо обычной разработки модульных и регрессионных тестов, нет. В рамках JSR 310 уже разработан большой набор тестов, который разделяется на тесты TCK и тесты, не входящие в TCK.
Риски и допущения
Проект в основном реализуют сотрудники, не работающие в Oracle, у которых нет финансирования для работы над этим проектом на полную ставку.
Потребуется проверка неизменяемости и потокобезопасности; предполагается, что она будет проведена.
Зависимости
-
Сейчас зависимостей от проекта Lambda нет, однако в ходе интеграции это может измениться.
-
Дизайн модульной системы для всего JDK повлияет на дизайн JSR 310.
Влияние
-
Другие компоненты JDK: другие API следует проверить на предмет того, могут ли они использовать классы JSR 310
-
Совместимость: новый код и несколько новых методов в существующих классах
-
Безопасность: влияние не ожидается
-
I18n/L10n: может понадобиться дополнительный фреймворк интернационализации (i18n) для лучшей поддержки календарей, отличных от григорианского
-
Переносимость: основная работа не требует дополнительного нативного кода, однако желательны более точные системные часы
-
Документация: стандартная документация javadoc и примеры, вероятно, обновления учебника и руководств
-
TCK: разработка новых тестов JCK
-
Правовые вопросы: интеграция кода из JSR 310, распространяемого по 3-пунктовой лицензии BSD