it-swarm.com.ru

Реализация функции автоматического обновления приложения JavaFX

Я собираюсь написать новое кроссплатформенное приложение, и я выбрал JavaFX, в основном из-за его богатых библиотек пользовательского интерфейса (как стандартных, так и сторонних) и его встроенной функции привязки данных. Мое приложение будет развернуто через встроенную упаковку, поскольку отсутствует плагин PPAPI Java (Chrome прекратит работу с NPAPI в Chrome 42, которая сейчас находится в бета-версии), что помешает пользователю Chrome, чтобы использовать WebStart, и потому что более "классический" пользовательский интерфейс, поэтому WebStart и автоматические обновления не обсуждаются.

Сценарий будет следующим:

  1. Приложение запускается и проверяет наличие обновлений
  2. Если обновления найдены, загрузите их и поместите во временную папку
  3. При закрытии приложения запишите новые загруженные файлы JAR поверх старых
  4. Автоматически перезапустить обновленное приложение

Тем не менее, у меня возникает несколько вопросов (первоначально эти два, но я мог бы обновить этот вопрос, как только у меня будет больше):

  • Насколько это безопасно? Могу ли я рисковать тем, что JVM каким-то образом сходит с ума, если я перезаписываю некоторые из JAR, уже использованных в жизненном цикле приложения?
  • Я изо всех сил пытаюсь найти способ автоматически перезапустить мое приложение JavaFX. Это вообще возможно?

Спасибо всем за вашу помощь.

14
Claudio Mezzasalma

Посмотрите на GetDown или pdateFX . Он реализует загрузчик bootstrap, который проверяет наличие обновлений, загружает их и запускает приложение, как только оно обновляется.

5
keuleJ

Возможно, вы можете попробовать install4j хотя это и платно. Главная особенность, которая мне нравится больше всего, - это автоматическое обновление и способ, которым вы можете легко настроить установщик (создайте Linux - deb, установщик rpm, Mac и установщик окон) и даже можете упаковать требуемую версию jdk для запуска вашего приложение (это означает, что вашим пользователям не нужно устанавливать эту версию Java перед использованием приложения)

Тем не менее, это может показаться немного излишним для ваших потребностей

1
Kiong

Я недавно создал pdate4j , который работает с модульной системой Java 9 и отвечает вашим требованиям.

0
Mordechai