Как можно подключать плагины к приложению на java?
Нужно написать гуишное приложение с возможностью подключать модули (то есть плагины). Причём программа не должна перезапускаться при их подключение (должно всё применяться сразу же).
Java по счастливому стечению обстоятельств умеет подгружать классы динамически:// Где-то там, где реализуется плагин 
class MyClass implements MyPluginInterface {}

// У нас тут, в модульной софтинке
try { 
    Class c = Class.forName("com.vasyapupkin.MyClass"); 
} catch (ClassNotFoundException e) {
    // log error
}
Затем, посредством рефлекшна, вы можете создавать экземпляры вашего типа:MyPluginInterface plugin = (MyPluginInterface) с.newInstance();При подключении плагина будет изменяться главная форма программы, то есть будут появляться какие-то кнопки, поля и прочее.
Ваша софтинка должна как-то отслеживать появление файлов. В простейшем случае - ждать появление файлов где-то по classpath, чтобы попытаться выудить новые классы. В простейшем случае классы могут быть наследниками GUI-компонентов (т.е. уметь себя рисовать) и вы можете просто вставлять их экземпляры в заранее известный контейнер.
ЗЫ Можно делать свой велосипед, но такая технология в Java уже существует из коробки - JavaBeans и, если вы хотите препода довести до экстаза, то стоит копать в этом направлении.
Используйте рефлексию.