В общем в течение нескольких лет пришел к схеме:
- класслоадер ядра:
- загрузка конфига
- инициализация самописной реализации ServiceLocator и DI каркаса)
- класс лоадер для каждого плагина
- инициализация плагина
= рассылка сообщения CoreLoaded
- загрузка служб плагинов и ядра
- класслоадер приложения
- построение GUI
- загрузка и построение главного меню по файлу описания
- построение окна
= рассылка сообщения GuiLoaded
- плагины, модули приложения регистрируют свои javax.swing.Action в реестре, где их ждут подписчики меню кнопок и т.п. (таким образом у нас строится меню, а action в него вешается когда загрузится соотв. модуль, это будет уже после отображения главного окна)
Может есть какиенибудь фреймворки для Java? (писать на .net не охота, что заработало на линуксе придется юзать G# и следовательно тащить на win mono)