BKM поставит конечному пользователю веб-приложение Java + Jetty + JRE - PullRequest
1 голос
/ 17 декабря 2011

У меня есть приложение Java с веб-интерфейсом (с использованием фреймворка Vaadin). Я хочу, чтобы пользователи получали приложение и работали на своих локальных компьютерах. Некоторые пользователи могут быть не очень техническими, поэтому им нужно сделать это как можно более простым и надежным.

Возможные решения:

  1. Создайте дистрибутив с помощью сценариев webapp + Jetty + batch и shell для запуска приложения. Может быть, включить JRE тоже. Пользовательская история будет такой: скачать какой-нибудь ZIP-файл, распаковать и запустить «start.bat» или «start.sh». Сценарий запустит Jetty и, возможно, запустит веб-браузер с «http://localhost:8080/myapp" URL». Не должно быть волшебства с «установкой JRE» или «каков ваш Java Home» или «ваш JRE слишком стар» и т. Д. напугать до чертиков многих нетехнических людей. Трудности здесь: что делать, если машина не имеет JRE? Я хотел бы избежать создания 3 разных дистрибутивов с JRE (для Win / Linux / MacOS). Упаковка всех трех JRE в один дистрибутив кажется излишним.

  2. Другой подход, который я вижу, это использование Java Web Start. Мое приложение будет загружено через JWS с Jetty JAR как зависимость и в этом случае запустит встроенный Jetty. История пользователя: нажмите кнопку на каком-либо веб-сайте, чтобы запустить приложение локально. Я помню проблемы с использованием JWS из-за прокси-сервера ~ 5 лет назад: не удалось загрузить зависимости. Не уверен, что это все еще проблема. Я не использовал JWS с тех пор, так что я очень знаком с этим. Другая проблема с JWS заключается в том, что для запуска приложения людям потребуется подключение к Интернету (по крайней мере, в первый раз или, возможно, каждый раз), что не всегда возможно (некоторые организации не могут быть подключены к Интернету). AFAIK, последний JWS предлагает установить JRE, если его еще нет, так что это должно быть легко для конечных пользователей. Это, вероятно, именно из-за потенциальных проблем с JWS (?).

  3. Наконец, последний подход состоит в том, чтобы упаковать все что-то вроде launch4j или InstallShield или чего-то еще. Надеемся, что эти программы способны установить JRE, если она еще не установлена, а также может работать в автономном режиме (для серверов).

Пока вариант 2 выглядит наиболее простым для большинства пользователей, если предположить, что JWS может делать то, что мне нужно.

Итак, мои вопросы таковы:

  • Какие дополнительные подводные камни вы видите с этими 3 решениями?
  • Какой из них вы бы предпочли в моем случае?

1 Ответ

0 голосов
/ 31 марта 2012

Я предпочитаю комбинацию решений 1 и 3. Я имею в виду:

  • Сначала создайте банку со встроенной Jetty, которая запускает ваше веб-приложение. Этот jar-файл должен иметь основной класс (запускающий встроенную Jetty) и файл MANIFEST.MF, настроенный со свойством «Main-Class», поэтому этот jar-файл можно запустить с помощью: «java -jar myEmbeddedWebApp.jar».
  • Затем используйте launch4j для создания оболочки exe для этого jar, например, myEmbeddedWebApp.exe
...