2011-01-16 3 views
7

Как я могу сделать программу Java, которая может обновить себя. Я делаю эту программу для использования в небольшой команде. Мне не нужны какие-либо дополнительные функции. Мне просто нужно простое и минимальное решение.Как написать программу самообновления в Java?

+1

Мне нужно уточнить, что вы подразумеваете под самообновлением. Это довольно загруженный и двусмысленный термин. – Uri

+0

Да: вы имеете в виду программу, которая пишет самоисполняемый код или программу, которая загружает новую версию? –

+0

Извините за этот термин ambiguos. Это просто как функция обновления Firefox. Он автоматически проверяет обновления через Интернет и обновляет текущую версию. Я стараюсь сделать небольшую утилиту для своей команды и распределить ее в команде. Это обычное приложение для рабочего стола. Я также постоянно совершенствую эту программу, но я не хочу снова отправлять эту программу всем. – dmay

ответ

9

Java Web Start предназначен специально для этого. Вы отправляете один файл jnlp, а java заботится о получении последней версии с сервера.

Кроме того, вы можете загрузить обновленные классы и заменить их во время выполнения.

+2

Следует отметить, что приложения, которые (неоднократно) загружают обновленные классы во время работы, имеют тенденцию к утечке памяти пермг. Вы можете избежать утечек, но это не просто. –

+1

Да, их лучше перезапускать время от времени. – Bozho

0

Что вы подразумеваете под самообновлением?

Если вы имеете в виду, что он меняет свое поведение во время выполнения (что редко), вы можете создать код, который записывает java-код, компилирует его и загружает изнутри запущенной программы. Я видел это.

Более распространенный сценарий - иметь базовую программу с плагинами, где сами плагины могут быть обновлены во время выполнения. Самый простой способ сделать это - просто использовать интерфейсы для этих сервисов, а затем загружать экземпляры этих типов во время выполнения. Тем не менее, создание полностью надежной платформы плагинов обычно заново изобретает колесо. Существует много существующих архитектур, таких как OSGi.

Смежные вопросы