JEP 231: Remove Launch-Time JRE Version Selection
Удаление выбора версии JRE при запуске
| Ответственный | Kumar Srinivasan |
| Тип | Feature |
| Область | JDK |
| Статус | Closed / Delivered |
| Выпуск | 9 |
| Компонент | tools / launcher |
| Обсуждение | core dash libs dash dev at openjdk dot java dot net |
| Трудоёмкость | S |
| Длительность | S |
| Рецензенты | Alan Bateman, Joe Darcy, Neil Toda |
| Одобрен | Brian Goetz |
| Создан | 2014/07/11 17:38 |
| Обновлён | 2017/03/09 01:29 |
| Задача | 8050071 |
Аннотация
Удалить возможность запрашивать при запуске JRE версию JRE, отличную от запускаемой.
Мотивация
Функция «Multiple JRE» («mJRE») позволяет разработчику указать, какую версию JRE или какой диапазон версий можно использовать для запуска приложения. Критерии выбора версии можно задать в записи манифеста файла jar приложения (JRE-Version) или в параметре командной строки (-version:) средства запуска java. Если запущенная версия JRE не удовлетворяет критериям, средство запуска ищет версию, которая им удовлетворяет, и, если находит, запускает её.
На практике развёртывание приложения требует большего, чем просто выбор определённой JRE. Современные приложения обычно развёртываются через Java Web Start (JNLP), системы пакетов операционной системы или активные установщики, и у каждой из этих технологий есть собственные способы найти, а иногда даже установить и затем обновлять подходящую для приложения JRE.
Функция mJRE решает лишь одну часть общей задачи развёртывания. Кроме того, при появлении в JDK 5 она так и не была полностью задокументирована: параметр -version: упоминается в документации команды java, но запись манифеста JRE-Version не упоминается ни в обычной документации JDK, ни в Java SE Platform Specification (спецификация платформы Java SE). Насколько нам известно, эта функция использовалась крайне редко. Она без необходимости усложняет реализацию средства запуска Java, из-за чего его трудно сопровождать и улучшать.
Описание
Удалить функцию mJRE. Изменить средство запуска следующим образом:
-
выводить сообщение об ошибке и завершать работу, если в командной строке указан параметр
-version:, и -
выводить предупреждение и продолжать работу, если в файле
jarнайдена запись манифестаJRE-Version.
Предупреждение вместо фатальной ошибки во втором случае выбрано потому, что запись манифеста может присутствовать в старых файлах jar, которые нелегко изменить, поэтому лучше продолжить работу, чем прервать её. Мы планируем сделать этот случай фатальной ошибкой в JDK 10.
Тестирование
Необходимо тестирование, чтобы убедиться, что функция удалена и выводятся соответствующие предупреждения и сообщения об ошибках.