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

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

 dmay17 янв. 2011 г., 11:17
Извините за этот двусмысленный термин. Это так же, как функция обновления Firefox. Он автоматически проверяет обновления через Интернет и обновляет текущую версию. Я пытаюсь создать небольшую утилиту для своей команды и раздать ее команде. Это обычное настольное приложение. Я также постоянно совершенствую эту программу, но я не хотел отправлять эту программу снова всем.
 Neil Coffey16 янв. 2011 г., 16:58
Да: вы имеете в виду программу, которая пишет самодельный код или программу, которая загружает новую версию самой себя?
 Uri16 янв. 2011 г., 16:29
Я думаю, вам нужно уточнить, что вы имеете в виду под самообновлением. Это довольно загруженный и неоднозначный термин.

Ответы на вопрос(2)

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

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

Решение Вопроса

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

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

 Bozho16 янв. 2011 г., 16:29
да, их лучше перезапускать время от времени.
 Stephen C16 янв. 2011 г., 16:29
Следует отметить, что приложения, которые (многократно) загружают обновленные классы во время работы, имеют тенденцию к утечке постоянной памяти. Вы можете избежать утечек, но это не так просто.

Ваш ответ на вопрос