Прямые буферы в NIO почти наверняка будут иметь лучшую производительность. Это почти идеальный случай для прямых буферов.
Я не уверен, в чем смысл вашего вопроса - если вы хотите узнать, есть ли другие варианты, тогда ответ, конечно, еще есть (вы могли бы, например, написать в файл, а затем вызвать внешнее приложение обработать его - или вы можете использовать JNI без прямых буферов). Но если вам нужен тесно связанный, высокопроизводительный интерфейс между кодом Java и C ++, JNI вместе с прямыми буферами станет инструментом для использования.