Многопоточность является очевидным первым приближением здесь. Взгляните на SwingWorker , запустите процесс в фоновом потоке, проследите за ходом процесса (например, покажите пользователю, если он все еще работает, возможно, даже посмотрите, что выводится на консоль) и т. Д. Это очевидный выбор.
Что JMS решит для вас (и вам нужно будет найти легковесную реализацию JMS, которая будет работать на настольном компьютере), так это разрешить повторные попытки и гарантировать, что процесс будет завершен. То, что для запуска сценария оболочки занимает 20 минут, не похоже на то, что оно является кандидатом на повторную попытку, но если это так, и важно, чтобы сообщение действительно прошло, а не просто как поток умирает, а процесс забывается если пользователь закрывает приложение java, то JMS - это то, на что нужно обратить внимание.