java jni 예제

By August 2, 2019Uncategorized

다른 Java 클래스에 의해 구현되는 대신 분리된 네이티브 공유 라이브러리에 구현된다는 주요 차이점이 있습니다. 프로덕션의 경우 모든 Java 클래스는 기본 이름 없는 패키지 대신 적절한 패키지로 유지되어야 합니다. 모든 네이티브 메서드의 구현에 대한 메모리포인터가있는 테이블이 생성되어 Java 코드에서 호출 할 수 있습니다. 이 예제에서는 헤더 파일을 “포함” 하위 디렉토리 아래에 배치하기로 결정했습니다. 생성된 출력은 “포함myjni_HelloJNI.h”입니다. JNI는 자바 문자열을 나타내는 jstring 형식을 정의했습니다. 마지막 인수 (JNI 형식 jstring)는 C 프로그램에 전달 된 자바 문자열입니다. 반환 형식도 jstring입니다. 자바 네이티브 인터페이스 (JNI)는 Java 네이티브 메서드를 작성하고 Java 가상 컴퓨터를 네이티브 응용 프로그램에 포함하기위한 표준 프로그래밍 인터페이스입니다. 주요 목표는 지정된 플랫폼의 모든 Java 가상 시스템 구현에서 네이티브 메서드 라이브러리의 이진 호환성입니다.

기본 데이터 형식은 Java 데이터 형식에 매핑할 수 있습니다. 개체, 배열 및 문자열과 같은 복합 형식의 경우 네이티브 코드는 JNIEnv에서 메서드를 호출하여 데이터를 명시적으로 변환해야 합니다. 헤더는 다음과 같이 C 함수 Java_HelloJNI_sayHello를 선언합니다: VM 옵션 -Djava.library.library=/path/to/lib를 통해 “hello.dll”(Windows), “libHello.so”(유닉스), “libhello.dylib”(Mac OS X)의 Java 라이브러리 경로를 명시적으로 지정해야 할 수 있습니다. 아래. 이 예제에서는 네이티브 라이브러리가 현재 디렉터리 `.`에 유지됩니다. 이것은 Java의 JNI에 대한 예제 리포지토리입니다. 코드는 C ++와 Java로 작성되어 javah 및 javac와 같은 도구를 통해 JNI와 상호 작용하는 올바른 방법을 올바르게 보여줍니다. 또는 CMakeLists.txt는 CMake를 사용하여 JNI 구현과 함께 C++ 라이브러리를 컴파일하고 jnihelper.sh 셸 스크립트는 JNI 라이브러리를 신속하게 프로토타입화할 수 있는 적절한 도우미 유틸리티를 제공합니다. 첫째, 메서드의 정의를 만들려면 Java 컴파일러의 -h 플래그를 사용해야 합니다. Java는 메서드 구현이 네이티브 코드에서 제공될 것임을 나타내는 데 사용되는 기본 키워드를 제공합니다.