java 9 и выше остается независимым от платформы или нет после того, как была введена эта модульная система? - PullRequest
0 голосов
/ 25 ноября 2018

Я не могу понять, что после того, как система модулей введена на нашем языке Java.Является ли java9 и выше независимой платформой или нет?Я задаю этот вопрос, потому что я прочитал, что теперь у каждого приложения будет свой jre внутри.Итак, как этот единственный jre будет работать на всех ОС, таких как Windows, Linux или Mac OS.

Ответы [ 4 ]

0 голосов
/ 26 ноября 2018

В то время как Java 9 облегчает поставку JRE, которая является более компактной и специфичной для потребностей отдельного приложения, вы не обязаны это делать.Если вы уже планировали поставку JRE вместе с вашим приложением, в Java 9 он может быть меньше, чем в более ранних версиях.

Это не означает, что вам нужно отправлять JRE, приложение, которое не поставлялось сJRE вряд ли начнет поставлять его сейчас, и фактически Java 11 поставляется только в виде JDK.

Из этой ссылки на функции Java 9 ;

JLink позволяет создавать пользовательские образы времени выполнения, которые состоят только из модулей вашего приложения и тех модулей JRE, которые вашиприложение требует.Результатом, вероятно, будет меньший образ среды выполнения, который использует меньше ресурсов, чем JRE по умолчанию.

0 голосов
/ 25 ноября 2018

Модульная система не влияет на независимость ОС от Java в целом.Приложения Java, использующие модульную систему , должны запускаться в JRE .Это может быть либо предустановленный JRE для конкретной ОС, как обычно, либо специализированный образ среды выполнения (встроенный JRE приложения), созданный с помощью JLink .

Основная цель модульных систем - предоставить вам управляемыеспособ разбить ваше приложение на разные логические модули.Например, в различные .jar файлы, которые могут быть загружены во время выполнения - независимо от того, в какой операционной системе.

В итоге, у вас есть следующие опции:

  • Убедитесь, что на вашем клиенте правильно установлена ​​JRE.Это может быть опасно, потому что (обычно) вы не контролируете его поведение при обновлении.

  • Отправьте ваше приложение вместе с официальной JRE.

  • Адаптируйте свой собственный приложение и специфичный для ОС образ среды выполнения, используя JLink .Поставьте его в комплекте с вашим приложением.

    Но, предположим, я не знаю, на какой ОС будет работать мой клиент, и как сервер решит, какой образ ему дать.т. е. образ Mac, образ Linux или Windows exe.

    Вы должны знать целевую ОС и предоставить правильный образ времени выполнения.

0 голосов
/ 25 ноября 2018

Является ли java9 и выше независимой от платформы или нет?

Да.Он так же независим от платформы, как и раньше.Система модулей не имеет ничего общего с независимостью от платформы.

теперь у каждого приложения будет свой собственный jre.

Это не обязательно, но это большеи больше рекомендуется с течением времени, так как меньше людей имеют отдельно установленную Java в своих системах. Этот использовал как данность, но это число уменьшалось в течение последнего десятилетия или около того,и теперь (за исключением разработчиков Java) почти никто не имеет установленной автономной JRE.

как этот одиночный jre будет работать на всех ОС

Это не будет,Вы будете связывать отдельные JRE для каждой платформы, для которой вы хотите распространять.Но JRE для всех платформ все еще находятся в свободном доступе, и тот же код Java будет по-прежнему выполняться на JRE для любой платформы.

0 голосов
/ 25 ноября 2018

Вы объединяете два разных изменения , недавно внесенных в платформу 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.

...