Как можно подключать плагины к приложению на java?
Здравствуйте. Дали тестовое задание. Нужно написать гуишное приложение с возможностью подключать модули (то есть плагины). Причём программа не должна перезапускаться при их подключение (должно всё применяться сразу же). Пока не знаю, как это реализовать.
Кроме того, меня ещё интересует следующее. При подключении плагина будет изменяться главная форма программы, то есть будут появляться какие-то кнопки, поля и прочее. И пока тоже не знаю, как это сделать. Есть мысли копать в сторону repaint(), но пока не уверен (не работал с этим).
ЗЫ Никаких сторонних фреймфорков использовать нельзя, только то, что есть в самой Джаве.
Вашу програму вам надо разбить на 2 части: 1) общие интерфейсы, 2) ваша программа с функционалом добавления/удаления плагинов. Особняком стоят модули которые имплементируют "общие интерфейсы". Задача общих интерфейсов: должны включать в себя набор классов и методов для того чтоб обновлять существующий GUI (напр. public interface PluginUI{ public void initialize(Component target)}. При загрузке плагина вам надо открыть диалог выбора плагинов (напр. open jar file), создать отдельную компоненту (java.awt.Component) в которой этот плагин будет отрисован. Найти класс который будет отрисовывать данный плагин (тот который имплементирует PluginUI). Последнюю задачу можно упростить если хранить названия класса в property file внутри jar file.
p.s.s самое главное тут это загрузка классов с помощью class loader, этому нужно уделить больше внимания
Александр +, ну понятие "новичок" размытое, мы же не знаем на какоую позицию человек пытается получить. Для меня junior и middle (вчерашний junior) и человек вчера выучивший синтаксис языка попадают в эту категорию.
Вообще товарищи немного прифигели, с такими тестовыми заданиями. Посмотрите в сторону OSGI, мы используем эту технологию и в общем-то да, как и декларировалсь, динамическая подгрузка нового кода работает. Но все так там через одно место сделано...