Может быть стоит взглянуть на KryoNet - он может соответствовать вашим потребностям, или, альтернативно, вы можете посмотреть, как они работают под капотом.
Между прочим, они используют ByteBuffers для TCP и UDP соединений. Я думаю, что хитрость заключается в том, чтобы абстрагироваться от ByteBuffers, чтобы любой клиентский код мог просто работать с POJO. Для этого вам, безусловно, понадобится логика, которая может разбить большой объект на несколько буферизованных записей.
Я думаю, что на самом деле вы все еще хотите использовать ByteBuffers, поскольку они очень быстрые, поддерживают различные нативные приемы ускорения и, как вам это нравится или нет, в конечном итоге вам нужно иметь дело с буферизацией в среде ввода-вывода с высокой пропускной способностью ....