Вы объединяете два разных изменения , недавно внесенных в платформу Java:
- Отказ от использования технологий Java Web Start & Applet
- Модуляризация
Отказ от настольных технологий
Недавно Oracle объявила о постепенном отказе от технологий Java Web Start , в дополнение к уже устаревшей технологии Applet .См. Элемент JDK-8184998 в заметках о выпуске Java 9:
Технологии развертывания Java устарели и будут удалены в следующем выпуске
Функциональность Java-апплета и WebStart, включая API-интерфейс апплета, плагин Java, средство просмотра апплетов Java, JNLP и Java Web Start, включая инструмент javaws, устарели в JDK 9 и будут удалены в JDK 9будущий выпуск.
Конечным пользователям больше не будет предлагаться устанавливать JDK или JRE на свой компьютер.
Для получения дополнительной информации см. технический документ на восьми страницах 2018-03.от Oracle, Обновление дорожной карты клиента Java .
Итак, как разработчики приложений Swing или JavaFX могутдоставить свое программное обеспечение конечному пользователю?
Oracle предлагает упаковать ваше приложение вместе с JVM & JRE для доставки в виде одного готового к запуску приложения, которое на клиенте выглядит как еще одно приложениенаряду с родными приложениями.Такая «двойная кликабельная» упаковка приложений обычно делалась на Mac с самого начала Java.Но то, что когда-то было непонятным искусством в других хост-средах ( Linux , BSD , Windows и т. Д.), Теперь станет нормой, как в macOS.
В прошлом году объединение среды выполнения Java с вашим приложением требовало преодоления некоторых лицензионных препятствий.Законность ослабла с появлением проекта с открытым исходным кодом OpenJDK и, возможно, с другими реализациями † .
Вам необходимо будет подготовить различные выпуски вашего приложения длякаждая среда размещения.В то время как ваш Java-код работает независимо от хост-ОС, JVM построен из собственного кода для взаимодействия с одним конкретным типом хоста.Поэтому вам нужно будет создать релиз Linux с JVM для Linux, релиз macOS с JVM macOS и так далее.Хотя это может показаться недостатком, положительным моментом является то, что вам больше не нужно беспокоиться о пользователях, у которых установлена неправильная версия JVM или вообще нет JVM.Теперь присутствие и версия JVM находятся под вашим контролем.Ваши конечные пользователи и клиенты больше не должны будут знать, что ваше приложение основано на Java.
Модуляризация
Эта потребность в упаковке приложения не имеет ничего общего с модульностьюJava .Как я уже сказал, это было сделано в течение десятилетий на Mac.
То, что модульность приносит участнику, заключается в том, что JVM / JRE, включенный в поставляемое приложение, можно настроить так, чтобы он содержал только модули Java, фактически используемые вашим конкретным приложением.Это приводит к меньшему размеру, поэтому ваше законченное приложение меньше, загрузка происходит быстрее, используется меньше памяти, и ваше приложение может загружаться быстрее.
с открытым исходным кодом jlink Инструмент «Java Linker» помогает с упаковкой, поэтому вы можете собрать и оптимизировать набор модулей и их зависимостей (только те, которые фактически вызываются вашим приложением) в пользовательский образ времени выполнения.Этот модульный формат изображения во время выполнения определен в JEP 220 .
† В соответствующей заметке вы можете прочитать официальный документ Java по-прежнему бесплатна , чтобы понять, как и где можно получить реализацию Java для вашего приложения, и какую поддержку можно или нельзя предлагать в бесплатных или платных выпусках.
Кстати, вам может пригодиться этот ответ на вопросе с блок-схемой выбора различных источников реализации Java.