>  기사  >  Java  >  JNI 구현 방법 및 Java 기반 기술의 로컬 메소드 호출

JNI 구현 방법 및 Java 기반 기술의 로컬 메소드 호출

王林
王林원래의
2023-11-08 12:26:11571검색

JNI 구현 방법 및 Java 기반 기술의 로컬 메소드 호출

JNI 구현 방법 및 Java 기본 기술의 로컬 메서드 호출

Java는 크로스 플랫폼 프로그래밍 언어이지만 때로는 기본 C 또는 C++ 코드와 상호 작용해야 합니다. Java에서는 JNI(Java Native Interface)를 통해 로컬 메서드에 액세스하여 기본 코드와 통신할 수 있습니다. 이 기사에서는 JNI를 사용하여 Java 및 기본 메소드 호출을 구현하는 방법을 소개하고 몇 가지 특정 코드 예제를 제공합니다.

먼저, 호출해야 하는 로컬 메서드를 선언하는 데 사용할 Java 클래스를 준비해야 합니다. 예를 들어, 두 개의 정수를 더하고 결과를 반환하는 데 사용되는 로컬 메서드 add를 선언하는 JNIExample이라는 클래스를 만듭니다.

public class JNIExample {
    static {
        System.loadLibrary("JNIExample");
    }
    
    public native int add(int a, int b);
}

위 코드에서는 정적 코드 블록을 사용하여 로컬 라이브러리 JNIExample을 로드합니다. 이 네이티브 라이브러리는 네이티브 메서드를 구현하는 데 사용할 C/C++ 코드로 컴파일되고 생성된 동적 링크 라이브러리입니다.

다음으로 add 메소드를 구현하기 위해 C/C++ 소스 파일을 작성해야 합니다. 이 파일의 이름을 JNIExample.cpp로 지정합니다. 다음은 JNIExample.cpp의 샘플 코드입니다.

#include <jni.h>

JNIEXPORT jint JNICALL Java_JNIExample_add(JNIEnv *env, jobject obj, jint a, jint b) {
    return a + b;
}

위 코드에서는 add 메소드를 구현하고, 이 메소드를 C/C++로 구현하여 정수 덧셈 연산을 완료합니다. 이 메소드의 서명은 Java에서 선언된 메소드와 일치해야 하며 JNIEXPORT 및 JNICALL 매크로를 사용하여 수정되어야 합니다.

다음으로 Java의 JNI 도구를 사용하여 C/C++ 소스 파일을 플랫폼 관련 동적 링크 라이브러리로 컴파일해야 합니다. 명령줄에서 다음 명령을 사용하여 컴파일합니다.

gcc -shared -fpic -I"${JAVA_HOME}/include" -I"${JAVA_HOME}/include/${TARGET}" -o libJNIExample.so JNIExample.cpp

위 명령에서는 gcc 컴파일러를 사용하여 JNIExample.cpp를 libJNIExample.so 동적 링크 라이브러리로 컴파일합니다. ${JAVA_HOME}을 Java 설치 디렉토리로 바꾸고 ${TARGET}을 대상 운영 체제의 디렉토리로 바꾸십시오.

컴파일이 완료되면 libJNIExample.so라는 동적 링크 라이브러리가 생성됩니다. 이 라이브러리 파일을 Java 클래스와 동일한 디렉토리에 배치하거나 라이브러리가 포함된 경로를 지정하십시오.

마지막으로 Java 프로그램에서 JNIExample 클래스의 add 메서드를 호출하여 로컬 메서드와 상호 작용할 수 있습니다. 다음은 JNIExample 클래스를 사용하는 샘플 코드입니다.

public class Main {
    public static void main(String[] args) {
        JNIExample jniExample = new JNIExample();
        int result = jniExample.add(10, 20);
        System.out.println("Result: " + result);
    }
}

위 코드에서는 JNIExample 개체를 만들고 해당 개체의 add 메서드를 호출합니다. 이 메소드는 이전에 C/C++에서 구현한 add 메소드를 호출하고 결과를 반환합니다. 마지막으로 결과를 인쇄합니다.

위 단계를 통해 JNI를 사용하여 Java 및 로컬 메서드 호출을 구현할 수 있습니다. JNI를 통해 기본 C/C++ 코드와 상호 작용하여 보다 유연하고 효율적인 애플리케이션 개발을 달성할 수 있습니다.

위 내용은 JNI 구현 방법 및 Java 기반 기술의 로컬 메소드 호출의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.