На мой взгляд, реальных, "готовых к употреблению" возможностей действительно две, но несколько иные:
1. Упомянутый вами OSGi
2. Библиотека
Java Plug-in Framework — нестандартная, но простая в использовании и легковесная альтернатива OSGi.
Всё остальное будет скорее всего либо заброшенными, не доведёнными до ума проектом, либо будет нуждаться в "доработке топором и напильником" (как в случае с JBoss).
//Дмитрий Ольшанский
Здравствуйте, Дмитрий Писаренко, Вы писали:
ДП>Здравствуйте!
ДП>Я хочу сделать одну программу, и изначально разбить её на несколько модулей так, чтобы можно было
ДП>а) включать/отключать некоторые модули во время выполнения (run-time) для того, чтобы сэкономить ресурсы,
ДП>б) заменять модуль версии X на модуль версии Y во время выполнения, не трогая (не компилируя,
ДП>не останавливая) другие модули, если они не связаны с заменяемым модулем,
ДП>в) добавлять функционал во время выполнения, добавляя новые модули (опять-таки, не трогая уже установленные).
ДП>Контейнер, который будет обеспечивать эти 3 функции, должен соответствовать следующим критериям:
ДП>1) Легковесность — контейнер не должен требовать слишком много ресурсов (пустой контейнер без
ДП>дополнительных функций должен весить не более 10 МБ).
ДП>2) Универсальность — важно, чтобы можно было устанавливать любые модули, от окошка на базе Swing,
ДП>модуля для связи с базой данных до веб-сервера.
ДП>3) Желательно, но не обязательно: В конфигурации модуля можно прописать, что он (модуль) будет работать
ДП>только, если установлен другой модуль. Если при инсталляции во время выполнения требуемый модуль отстутствует в
ДП>контейнере, то контейнер сообщает об этом пользователю и не запускает инсталлируемый модуль.
ДП>4) Обязательно: Контейнер должен быть с открытым исходником, разрешающим применение в коммерческих приложениях.
ДП>Я нашёл 2 принципиальные возможности сделать такой контейнер:
ДП>1) Каркас на базе OSGi, например, Apache Felix, Equinox или Knopflerfish
ДП>2) Микро-ядро JBoss — взять JBoss и выдрать из него всё, кроме механизмов работы с модулями.
ДП>Вопрос: Какие ещё варианты есть и какие из них кажутся Вам оптимальными?
ДП>Заранее благодарен
ДП>Дмитрий Писаренко