Как хочешь так и делай. RMI наверное самый простой вариант, для интероперабельности с неджавой лучше что то вроде XML-RPC или Web Service использовать, если хочется низкоуровневости - сокеты.
Самый быстрый - сокеты, самый удобный RMI или веб-сервисы. Для интероперабельности с нежабой веб-сервисы.
Для очень быстрой интероперабельности с нежабой Google Protobuf (с небольшим гемором впридачу). Зато на protobuf пишешь *.proto файл, в котором описываешь сообщение. Оно генерирует классы для Java, С++, Python. Класс можно сериализировать, отправить по сети и потом десериализировать в другом ЯП. И это очень быстро и мало трафика жрет. Гугол для внутренней связи использует. У них там 48000 тысяч разных видов сообщений бегает.
я тоже сделал поток на клиента, но это сторона сервера. я не понимаю как в клиенте сделать асинхронную обработку входящего. пока получается все синхронно, и все жабские статейки, которые нагуглились, про асинхронность ничего не знают.
пока вот придумалось запустить на клиенте отдельный тред-чтец из потока. не?
Я делал именно так. А как вы делали асинхронность в С++? Там кажется тоже в потоке надо читать синхронно. С ростом нагрузки количество потоков станет очень большим, что навредит scalability как в Java, так и в C++. Потому нужно использовать select.
В Java это тоже есть для поддержки высоких нагрузкок
В Java правда чуть получше, потому что на винде оно ляжет на Winsock, а на UNIX на нормальный POSIX. Сейчас как раз пишу на С++/protobuf и знаю какой это ад выбирать POSIX или WinAPI с помощью ifdef