JEP 108: Collections Enhancements from Third-Party Libraries
Улучшения коллекций, заимствованные из сторонних библиотек
| Ответственный | Mike Duigou |
| Тип | Feature |
| Область | SE |
| Статус | Closed / Withdrawn |
| Компонент | core-libs |
| Обсуждение | core dash libs dash dev at openjdk dot java dot net |
| Трудоёмкость | M |
| Длительность | L |
| Одобрен | Brian Goetz |
| Создан | 2011/09/23 20:00 |
| Обновлён | 2024/04/22 16:06 |
| Задача | 8046098 |
Аннотация
Развивать Java Collections Framework, перенимая распространённую и популярную функциональность из сторонних библиотек.
Цели
-
Наша позиция должна состоять в том, что Java Collections Framework предоставляет широкий набор функциональности, покрывающий основные потребности большинства Java-разработчиков.
-
JCF остаётся основным источником классов коллекций.
-
Java-разработчики не вынуждены полагаться на сторонние (3rd party) библиотеки.
Что не является целью
Цель не в том, чтобы избавиться от сторонних (3rd party) библиотек. Всегда будет функциональность, которую мы решим не включать в JDK, а авторы библиотек всегда будут продолжать разрабатывать новые библиотеки.
Критерии успеха
-
JCF остаётся основным источником классов коллекций. Java-разработчики не вынуждены полагаться на сторонние (3rd party) библиотеки.
-
Java-разработчики начинают пользоваться новой функциональностью.
Мотивация
Небольшие улучшения утилит java.lang, такие как Objects.requireNonNull, уже были очень хорошо приняты. Практикующие Java-разработчики очень ценят улучшения такого рода. Мы будем перенимать «лучшее» из сторонних (3rd party) библиотек. Так снизится потребность в этих библиотеках или спрос на них.
Описание
Будут перениматься две категории «лучшего»:
-
Вспомогательные функции и идиомы, которые делают использование существующей функциональности проще, удобнее или производительнее.
-
Перенос очень небольшого числа важных структур данных общего назначения, если такие удастся выявить и если позволит время. Наиболее вероятные кандидаты: MultiMap, Multiset, BidiMap/BiMap. MultiMap и MultiSet полезны для массовых операций над данными. Разумно определять, реализовывать ли эти возможности, исходя из того, насколько они срочно нужны (или, наоборот, не нужны) другим частям JDK.
Альтернативы
Сделать Java зависимой от сторонних (3rd party) библиотек коллекций, как это сделано для XML, частей JCE (NSS) и JavaScript (Rhino).
Тестирование
Стандартное для Java Collections Framework.
Риски и допущения
Наибольший риск связан с требованиями, которые накладывает JEP 107 и которые ещё не определены полностью. Возможно, этот JEP стоит разделить на два: один с низким риском, а второй для функциональности, которая пока не определена.
Зависимости
Это предложение отчасти служит поддержкой JEP 107. Требования к новым структурам данных будут определяться потребностями этого JEP.
Влияние
- Другие компоненты JDK: оправдан будет некоторый рефакторинг для использования новых возможностей.
- Совместимость: только прямая совместимость. Изменений, нарушающих обратную совместимость, не будет.
- Производительность и масштабируемость: стандартные для JCF
- Переносимость: только код на Java. Нативного кода нет.
- Документация: стандартная
- TCK: требуются новые тесты. Особых требований нет.