Как выполнить обновление до jlink (JDK 9+) из Java Web Start (JDK 8) для приложения с автоматическим обновлением? - PullRequest
0 голосов
/ 02 октября 2018

Java 8 и более ранние версии имеют Java Web Start , которая автоматически обновляет приложение при его изменении.Oracle рекомендовала пользователям перейти на jlink , поскольку это новая технология Oracle.Пока это звучит хорошо.Это дает множество преимуществ:

  1. Собственный код для Windows, Mac и Linux
  2. Модуляризация кода (хотя Proguard делает это также)
  3. использование новой поддерживаемой технологии.

Проблема: я не могу найти каноническое решение Java для автоматического обновления с помощью jlink.

Можно подуматьчто Java Web Start можно продолжать использовать, особенно если кто-то читает этот документ .Обратите внимание на тот факт, что Java Web Start продолжает занимать видное место в списке.Но есть мазь в мази : Oracle не поддерживает Java Web Start.Это намечено для удаления в JDK 11. Итак, каков официальный путь вперед.В противном случае, есть ли стандартный путь, по которому люди поступают?

Для целей этого вопроса следующее выходит за рамки :

  • Ежегодно выплачивать огромные суммы денег кому-либо с помощью многофункционального корпоративного решения.Распределяемое приложение уже упаковано в одну банку размером менее 50 МБ.
  • Вынуждение пользователей запускать приложение в стиле InstallShield для переустановки новой версии, а затем вручную удалять старую версию при каждом обновлении.толкнул.Это ооочень 1990-е годы.
  • Портирование всего приложения в веб-приложение, переписывание пользовательского интерфейса и логики на стороне клиента, чтобы оно соответствовало браузеру, и устранение всех возможных несовместимостей.Авторы приложения работали над GWT и точно знают, на что способны веб-браузеры.К сожалению, они также знают уровень требуемых усилий.
  • Разрешение пользователям продолжать запуск старых версий приложения.Это тоже ооочень 1980-е годы.Современные приложения быстро обновляются, и поддержка каждой версии приложения, когда-либо выпущенной, невозможна.Это то, с чем приходилось иметь дело приложению COBOL моего отца, и ему это не нравилось.Я надеюсь, что технология прогрессировала.
  • Продолжение использования Java Web Start.До тех пор, пока Oracle не изменит свое решение, Java Web Start является обреченной технологией.

Ответы [ 2 ]

0 голосов
/ 22 августа 2019

Используете ли вы maven?

Я решил похожую проблему с maven (мне нужно обновить EAR).

В моем основном приложении (пакет ear) есть помпа.xml со списком зависимостей и репозиториев.

Зависимости имеют тег <version> с диапазоном ( документация ), как в этом примере

<version>[1.0.0,)</version>

Это означает:получить версию 1.0.0 или новее зависимости.(Вы также можете установить верхнюю границу для версии, [1.0.0, 2.0.0), поэтому, если вы разрабатываете новую версию, она не используется в старом приложении)

В разделе репозитория я добавил свойличный репозиторий.

Теперь на удаленной машине мне нужно только пересобрать мой пакет ear с помощью maven: компилятор скачает более новую версию моего jar и соберет ее вместе.

Вам нужна системачтобы проверить, есть ли более новая версия зависимостей и предупредить пользователя, чтобы обновить приложение, а также заблокировать его работу (вы не можете работать, если вы не обновляете).Возможно, вам нужно небольшое приложение, чтобы пользователи могли легко выполнить процесс восстановления.Это 1990-е годы, но многие настольные приложения работают таким образом

PRO

  • Эта схема может использоваться во многих различных проектах.

CONTRO

  • Необходимо создать приложение на удаленном компьютере, поэтому у клиента должен быть JDK и доступ к вашемурепозиторий (например, артефакт);

  • Вы должны написать код в разных банках и добавить их как зависимости в основной архив.

  • Вы должны изменитьJAR-версию каждый раз и публиковать в репозитории (это может быть хорошей практикой)

0 голосов
/ 15 августа 2019

У меня была похожая проблема в прошлом проекте.Нам нужно было перейти с Webstart на другую технологию.

Первым подходом была установка IcedTea .Он напрямую связан с проектом AdoptOpenJDK.

Но насколько я понял проблему, Java больше не предназначалась для такой установки на стороне Клиента, и мы не хотели проблем со всеми нашими клиентами.

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

Последнее, что было сделано, - это перенаправление в папку загрузки исполняемого файла при вызове jnlp-URL.

...