TG Telegram Group & Channel
Java Developer | United States America (US)
Create: Update:

👩‍💻 JNI (Java Native Interface)

JNI — это встроенный интерфейс, который позволяет Java-коду вызывать функции из C или C++ и работать с нативными библиотеками операционной системы.

Он используется, когда нужно взаимодействовать с нативным кодом, применять специфичный для платформы функционал или подключить библиотеки, недоступные на Java.

Пример Java-класса:

public class HelloJNI {
public native void sayHello();
static {
System.loadLibrary("hello");
}
}


Соответствующая C-реализация:
#include <jni.h>
#include <stdio.h>
#include "HelloJNI.h"

JNIEXPORT void JNICALL Java_HelloJNI_sayHello(JNIEnv *env, jobject obj) {
printf("Hello from C!\n");
}

Функция Java_HelloJNI_sayHello должна строго соответствовать полному имени Java-класса и метода: Java_<ClassName>_<MethodName>.


Компиляция (Linux/macOS):
gcc -shared -fpic -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux" -o libhello.so HelloJNI.c


Использовать JNI следует с осторожностью: ошибки в нативном коде могут привести к утечкам памяти, нарушению безопасности и краху JVM.

📌 JNI особенно полезен при работе с CUDA, OpenCV, аудиобиблиотеками, нативными API и при переносе существующего C/C++-кода в Java-приложение.


Ссылка на документацию

tags: #обучение

📱 Java Developer | Чат

👩‍💻 JNI (Java Native Interface)

JNI — это встроенный интерфейс, который позволяет Java-коду вызывать функции из C или C++ и работать с нативными библиотеками операционной системы.

Он используется, когда нужно взаимодействовать с нативным кодом, применять специфичный для платформы функционал или подключить библиотеки, недоступные на Java.

Пример Java-класса:
public class HelloJNI {
public native void sayHello();
static {
System.loadLibrary("hello");
}
}


Соответствующая C-реализация:
#include <jni.h>
#include <stdio.h>
#include "HelloJNI.h"

JNIEXPORT void JNICALL Java_HelloJNI_sayHello(JNIEnv *env, jobject obj) {
printf("Hello from C!\n");
}

Функция Java_HelloJNI_sayHello должна строго соответствовать полному имени Java-класса и метода: Java_<ClassName>_<MethodName>.


Компиляция (Linux/macOS):
gcc -shared -fpic -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux" -o libhello.so HelloJNI.c


Использовать JNI следует с осторожностью: ошибки в нативном коде могут привести к утечкам памяти, нарушению безопасности и краху JVM.

📌 JNI особенно полезен при работе с CUDA, OpenCV, аудиобиблиотеками, нативными API и при переносе существующего C/C++-кода в Java-приложение.


Ссылка на документацию

tags: #обучение

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍116


>>Click here to continue<<

Java Developer






Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)