Если хочется обойтись базовыми явовскими технологиями, то можно сделать диспетчер заданий простым ява-классом и коннектиться к нему через RMI.
Диспетчер может выдавать задания через интерфейс Runnable, а все что делает клиент — это получает очередное задание и запускает run(). Главное, что бы у исполнителя в classpath были необходимые классы с заданиями.