Учитывая, что у вас уже есть приложение, возможно, самое простое, что нужно сделать, - это определить интерфейс, который вам требуется между клиентом и сервером, и, прежде всего, провести рефакторинг вашего приложения, чтобы использовать этот интерфейс для взаимодействия между бэкэндом / front-end в том же процессе .
Тогда вы можете начать разделять это на части. Простым решением было бы разделить это на части с помощью RMI (поскольку вы говорите об объектах Java и имеете вызовы методов Java). Spring содержит полезные инструменты для упрощения / автоматизации RMI-интерфейсов.
Для требования уведомления достаточно простого многоадресного UDP (или широковещательного).
Обратите внимание, что как только вы разбили свое приложение, у вас возникли проблемы. поддержание согласованного представления данных, управление своевременными обновлениями, обработка случаев, когда сервер не работает, возможные проблемы с загрузкой, когда у вас много клиентов и т. д. В некотором смысле, разделение приложения на клиент и сервер - это только начало новой архитектуры процесс.