JEP 135: Base64 Encoding & Decoding
Кодирование и декодирование Base64
| Ответственный | Alan Bateman |
| Тип | Feature |
| Область | SE |
| Статус | Closed / Delivered |
| Выпуск | 8 |
| Компонент | core-libs |
| Обсуждение | core dash libs dash dev at openjdk dot java dot net |
| Трудоёмкость | S |
| Длительность | S |
| Одобрен | Brian Goetz |
| Создан | 2011/11/11 20:00 |
| Обновлён | 2017/06/14 20:12 |
| Задача | 8046125 |
Аннотация
Определить стандартный API для кодирования и декодирования Base64.
Мотивация
Схемы кодирования Base64 часто используются для кодирования двоичных/октетных последовательностей, которые передаются как текстовые данные. Base64 широко применяется в приложениях, использующих Multipurpose Internal Mail Extensions (MIME), при кодировании паролей для заголовков HTTP, дайджестов сообщений и т. д.
Стандартный API для кодирования и декодирования Base64 давно должен был появиться в JDK. Разработчики просили о нём на протяжении многих лет, и многие прибегали к использованию закрытых и неподдерживаемых классов JDK, таких как sun.misc.BASE64Encoder и sun.misc.BASE64Decoder.
В самом JDK есть несколько внутренних реализаций, например java.util.prefs.Base64, com.sun.org.apache.xml.internal.security.utils.Base64 и com.sun.net.httpserver.Base64. Стандартный API позволил бы отказаться от подобных реализаций.
Описание
Определить простой API для кодирования и декодирования Base64, вероятно, в java.util.
API должен чётко указывать схему кодирования Base64, которую он реализует, вероятно, Base64 Content-Transfer-Encoding, определённую в RFC 1521.
API должен поддерживать типичные случаи, такие как кодирование двоичных данных из массива байтов или прочитанных из входного потока, а также декодирование строк в массив байтов или ByteBuffer.
Следует изучить существующие случаи использования и реализации Base64 в JDK, чтобы найти возможности заменить их новым API.
Тестирование
Для этого API потребуются новые модульные тесты, которые будут разработаны вместе с реализацией. Новые функциональные тесты тоже были бы полезны.
Влияние
- TCK: потребуются новые тесты.