Какую систему вы рекомендуете для реализации «автоматических обновлений» для некоторых java (настольных) приложений? Я также хотел бы установить и обновить модуль / плагин. Вспомните Eclipse и Firefox.
Я знаю о материалах OSGi Eclipse RCP, а также о NetBeans RCP здесь есть кое-что. Нужно ли полностью покупать соответствующие материалы RCP, чтобы использовать свои модули и системы автоматического обновления?
Есть ли другие варианты?




Вы смотрели Запуск Java Web? Он проверяет наличие обновленного модуля на сервере и загружает его только в случае необходимости, в противном случае все кэшируется локально на клиентском ПК и запускается оттуда.
Почему размер может быть проблемой ??
Веб-запуск в порядке, но имеет много странных проблем. особенно если вы устанавливаете несколько версий или одну и ту же версию несколько раз (что не редкость для разработчиков / QA), и многие вещи приходилось переходить в программу просмотра кеша и т. д.
Кроме того, если вы используете веб-запуск, пользователь всегда может включить консоль Java, поэтому будьте осторожны с тем, что вы отправляете в потоки System.out / err.
@Tackline: Я думал, что WebStart предназначен в основном для вещей, которые изначально запускались с веб-страницы, и имел характеристики довольно монолитного, «единого» приложения. Я говорю о модульной системе, хотя и с ядром, которое также необходимо обновлять.
Проблема с JWS - это менеджер безопасности. Он строже обычного.
с динамическим jnlp не уверен, что проблема с несколькими приложениями или версиями.
Имейте в виду, что у Java Web Start традиционно было много проблем с кешированием. Вы можете очень помочь, убедившись, что каждая версия каждого развертываемого файла имеет уникальный URL-адрес (например, вставив имя версии или номер выпуска в URL-адрес).
@JohnGardner Пользователь всегда может включить консоль.
Web Start отлично подходит, если у вас нечастые обновления и хорошая пропускная способность.
Если же нет, вам нужно что-то еще. Я работал над проектом, в котором у нас были частые обновления и ужасная пропускная способность. Мы свернули наш собственный сервер файлов классов; код запуска будет общаться с сервером, чтобы узнать, нужны ли обновления для каждого класса. Если это так, измененные классы были загружены, и приложение продолжало работать в обычном режиме.
На самом деле это было не так уж сложно, поэтому не бойтесь откатывать свои собственные, если существующие инструменты не работают.
jardiff означает, что нужно загружать только различия, а не все. Должно быть нормально даже с плохой пропускной способностью.
@tom, у тебя есть опыт в этом? Я хотел бы услышать, стоит ли это усилий.
davetron, как я могу реализовать код запуска в одном файле jar? Сканирование различий классов - это не проблема, но запуск есть. Я не могу перезаписать работающую банку после загрузки обновления.
Томаш: что мы сделали (и я не уверен, что это было почти 7 лет назад :), так это загрузить классы и убедиться, что новые классы находятся на пути к классам раньше, чем старые. У нас был контроль над путем к классам, так что это не было проблемой.
Я считаю, что install4J теперь предлагает эту функциональность как часть своего конструктора установки (http://www.ej-technologies.com/products/install4j/overview.html). Мы хотели проверить это, но пока не имели возможности.
Спасибо, было интересно. Возможно, используйте это для «основного контейнера», и, например, OSGi Eclipse для плагинов?
Взгляните на Равноденствие p2, что, вероятно, вы имели в виду под «материалом OSGi Eclipse RCP» ... НАСКОЛЬКО вам, воля нужно OSGi-ify ваше приложение для использования p2 (что, по крайней мере, означает, что все ваше приложение будет одним большим пакетом) .
Я не совсем считаю, что Java Web Start является здесь ответом. Предположим, что это большое приложение - близко к «контейнеру» приложения, подобному Eclipse (IDE) и подобному Firefox.