Как легко обмениваться сообщениями между Java приложениями?
Если нужна минимальная задержка то нужно отказываться от json в пользу бинарников, например protobuf. Максимально все урезать в сообщениях оставив только действительно важное. Желательно задействовать чистый udp по возможности, или если критичны потери взять tcp.
Как вариант действительно простого решения можно попробовать kryonet, там и сериализатор из коробки довольно удобный.
Еще, если данные у вас общие, то попробуйте вообще без сообщений! Смотрите в сторону hazelcast.org или apache ignite. Это системы In-Memory DB, кеши живущие в памяти и распределяющие данные между нодами.
Смысл такой, один клиент публикует данные в распределенный хеш, а все остальные тут же читают эту информацию, с плюшками, преферансом и куртизанками. Очень удобно, особенно для распределенных вычислений или общего хранилища сессий, или для обмена данными.