Я ищу лучший подход для вызова современного кода C++ 11/14 из java (с обратными вызовами из C++ обратно в java). Каков наилучший/самый простой/быстрый способ обеспечения взаимодействия между java и С++ 11/14? Я некоторое время программировал на Python и C++ и стал зависеть от pybind11. Я ищу что-то похожее (или лучше) pybind11 для java.
Я осознаю джни и джна. Но jni слишком низкоуровневый, утомительный и подверженный ошибкам. Согласно этой записи в блоге «JNA значительно медленнее, чем JNI». В этом сообщении в блоге используется bridj, но за три года, прошедшие с момента написания этой статьи, bridj, похоже, превратился из «относительно молодого проекта» в проект, в котором есть только два коммита с тех пор.
Я также знаю о swig, но, по крайней мере, для python я предпочитаю прямую обертку, которую предлагает pybind11, а не подход генератора обертки swig. Я наткнулся на jni.hpp и javacpp. jni.hpp, кажется, больше всего похож на pybind11, но он выглядит незрелым и не широко используется в сообществе Java. Является ли javacpp ближайшим java/С++ эквивалентом pybind11 для python/С++?
Я ценю любое руководство.
(Для тех, кто закрыл этот вопрос как дубликат вопроса более чем 7-летней давности Как позвонить C++ из Java?, мой вопрос касается лучшей на данный момент библиотеки, которая поддерживает совместимость java/c++ с использованием новейших улучшений языка C++, которые произошли с 2011 года. Пожалуйста, откройте заново.)