У меня есть приложение Java с веб-интерфейсом (с использованием Vaadin framework). Я хочу, чтобы пользователи получили приложение и работали на своих локальных машинах. Некоторые пользователи могут быть не очень техничными, поэтому необходимо сделать их максимально простыми и надежными для них.BKM для доставки веб-приложения Java + Jetty + JRE для конечного пользователя
Возможные решения:
Создать дистрибутив с веб-приложение + Jetty + партии и сценарии оболочки для запуска приложения. может включать JRE тоже. Пользовательская история будет: загружать ZIP-файл, распаковывать и запускать «start.bat» или «start.sh». Сценарий запустит Jetty и, возможно, запустит веб-браузер с URL-адресом http: // localhost: 8080/myapp. Не должно быть никакой магии с «установкой JRE» или «что такое ваш Java-дом» или «Ваша JRE слишком старая» и т. Д. Это напугает ад из многих нетехнических людей. Трудности здесь: что, если машина не имеет JRE? Я бы хотел избежать создания 3 разных дистрибутивов с JRE (для Win/Linux/MacOS). Упаковка всех 3 JRE в один и тот же дистрибутив кажется излишним.
Другой подход, который я вижу, - использование Java Web Start. Мое приложение будет загружаться через JWS с Jetty JAR в качестве зависимости и запустить встроенный Jetty в этом случае. User Story: нажмите кнопку на веб-сайте, чтобы запустить приложение локально. Я помню, что у меня проблемы с использованием JWS из-за прокси ~ 5 лет назад: зависимости не могли быть загружены. Не уверен, что это все еще проблема. С тех пор я не использовал JWS, поэтому я очень хорошо знаком с этим. Еще одна проблема с JWS заключается в том, что для запуска приложения требуется подключение к Интернету (по крайней мере, в первый раз или, возможно, каждый раз), что не всегда возможно (некоторые организации не могут быть подключены к Интернету). AFAIK, последний JWS предлагает установить JRE, если его еще нет, поэтому это должно быть легко для конечных пользователей. Возможно, это связано с потенциальными проблемами с JWS (?).
Наконец, последний подход состоит в том, чтобы упаковать все с чем-то вроде launch4j или InstallShield или что-то еще. Надеемся, что эти программы способны устанавливать JRE, пока он еще не представлен, а также может работать в режиме безглавых (для серверов).
Пока что вариант 2 выглядит наиболее простым для большинства пользователей, предполагая, что JWS может делать то, что мне нужно.
Итак, мои вопросы таковы:
- Какие дополнительные подводные камни вы видите эти 3 решения?
- Какой из них вы предпочитаете в моем случае?