Подтвердить что ты не робот

Альтернативы Java Web Start?

У нас огромные проблемы с Java Web Start в производстве. Мы боимся выпустить, потому что каждый раз, когда мы делаем, служба поддержки получает звонки от 1/3 пользователей с ошибкой "невозможно запустить". Трудно сказать, из-за ошибки пользователя, отмены в середине загрузки, плохого сетевого соединения или чего-то еще. Но суть заключается в следующем:

Мы находим это ужасно ненадежным.

Каковы альтернативы развертывания и обновления многофункционального приложения Swing? Будь то бесплатный или коммерческий, меня больше интересуют функции и надежность.

Надежность является ключевым фактором, но я также хотел бы иметь следующее:

  • Установите один раз, обновите автоматически с простого HTTP-хостинга, такого как JWS
  • Дифференциальные обновления
  • Поддержка нескольких конфигураций (например, 30 экземпляров, которые могут иметь разные версии приложения или разные параметры запуска - было бы неплохо не создавать 30 артефактов каждый раз)
  • Поддержка Win/Mac/Linux. Надеюсь, что это не значит, что я должен поддерживать 3 сборки для каждого экземпляра.
4b9b3361

Ответ 1

Я чувствую вашу боль, самой большой проблемой, с которой я столкнулся с JWS, является видимость, то есть, что она делает и почему она это делает. Большинство наших проблем были связаны с внутренними прокси-серверами (Java, похоже, действительно не любит аутентификацию доверенных лиц), и на данный момент морщины кажутся сглаженными. Тем не менее, я действительно рассматривал просто запись замены. Это не так сумасшествие, как кажется, JWS делает очень много вещей, на которых меня не волнует, а именно, интеграции с веб-браузером и проверки версий JVM. Рассмотрим следующий сценарий:

  • Вы запускаете приложение Java (приложение для запуска). Это приложение принимает один параметр, который является URL-адресом файла JNLP.
  • Приложение запускает хэширование URL-адреса и использует его в качестве основы для локальной папки (хранилища), в которой хранятся любые загруженные банки для приложения. Если репозиторий не существует, он создаст его.
  • Приложение запуска пытается загрузить JNLP, на который указывает URL. Если он не может загрузить его, он просто запустит все, что находится в репозитории (может быть, предупредить пользователя).
  • Если он может загрузить JNLP, проанализируйте его и перечислите все банки, требующие загрузки. Если у вас уже есть банки, используйте что-то вроде Apache HttpClient, чтобы определить, имеет ли сервер более новую версию и, при необходимости, загружается. Важно то, что любые загрузки должны храниться во временной папке. Как только ВСЕ из загрузок преуспели, вы можете применить их к локальному репозиторию. В идеале вы создадите резервную копию того, что уже существует, чтобы разрешить какую-то процедуру отката.

Это должно обеспечить некоторые очень существенные преимущества перед обычным JNLP:

  • Видимость, вы можете записывать точно, что происходит.
  • Гораздо лучшие режимы отказа: если загрузка прерывается, просто запустите версию, которая уже существует (очевидно, это не сработает, если вмешательство происходит при первой загрузке), если вам хочется сообщить об этом пользователю, сделайте это.
  • Запустив локальное приложение, вы должны избегать проблем с подписанием баннеров, я честно не понимаю модель безопасности Java Web Start в отношении подписанных банок, но кажется, что если задействуются разные загрузчики классов, JWS будет жаловаться об этом (я думаю)

К сожалению, я не в состоянии уволить вас над рабочей версией выше, я начал прототип, но приостановил его. Возможно, мне придется вернуться к нему в будущем, и в этом случае я буду рад поделиться готовой версией.

Cheers, Фил

Ответ 2

В настоящее время мы используем GetDown для управления распространением наших свинг-приложений. Мы используем Tomcat для распространения обновлений и GetDown для загрузки этих обновлений. Он действительно гибкий и мощный, и намного лучше, чем java WebStart, и поскольку он производит контрольную сумму для изменений, он сохраняет пропускную способность и загружает только что измененные файлы.

Хороший учебник: http://www.hascode.com/2012/05/creating-updatable-java-applications-using-getdown-and-the-getdown-maven-plugin/

Ответ 4

Поскольку Java Web Start устарела в Oracle, мы рассматриваем возможность использования Microsoft.NET Click Once для загрузки и запуска нашего приложения Java.

У нас будет файл приложения Click Once.application, который запускает небольшую программу MS, которая обнаруживает Java, загружает наши последние файлы jar, а затем запускает нашу программу Java, используя обнаруженную версию Java и файлы Jar.

Конечно, это только решение для компьютеров с Windows, но мы являемся клиентами исключительно для Windows, так что это работает в этой среде.

MS Нажмите один раз: https://docs.microsoft.com/en-us/visualstudio/deployment/clickonce-security-and-deployment

Ответ 5

Вы также можете попробовать Zero Install. Он кроссплатформенный (Linux, Win, Mac), предлагает загрузку jrd и автоматическое обновление и имеет приятную системную интеграцию.

Недостаток в моих глазах, что это не легко справиться..

http://0install.net/