Ответ
Да, работал с JNI (Java Native Interface). Используется для взаимодействия Java/Kotlin с нативным кодом (C/C++). Основные шаги:
- Объявляем native-метод в Java/Kotlin:
external fun nativeMethod(): String
- Генерируем заголовочный файл через
javac -h - Реализуем нативный код (пример для C++):
#include <jni.h>
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_NativeClass_nativeMethod(JNIEnv* env, jobject) {
return env->NewStringUTF("Hello from JNI!");
}
- Подключаем в CMakeLists.txt и загружаем в Java через
System.loadLibrary().
Важно учитывать:
- Управление памятью (avoid memory leaks)
- Исключения (CheckJNI, ExceptionCheck)
- Потокобезопасность (JNIEnv per-thread)
- Производительность (критичные участки кода)
Пример из практики: интеграция C++ библиотек для обработки изображений.