Java Jni 원칙
JNI는 Java 표준 플랫폼에서 중요한 기능입니다. 그것은 플랫폼 독립적 인 Java의 중요한 이점의 단점을 보완합니다. Java는 크로스 플랫폼이지만 다른 언어 (예 : C 및 C ++)의 동적 라이브러리와 상호 작용하여 다른 언어에 장점을 재생할 수있는 기회를 제공 할 수 있습니다.
Java 표준 플랫폼을 지원하면 JNI 모드를 쉽게 구현하고 사용하기 쉽습니다. 다음은 다음 지식 그래프에 대한 요약입니다.
예:
환경 설명 : 우분투 10.4.2 LTS 시스템
프로그램 목록 1 : SRC/COM/MAGC/JNI/HelloWorld.java
/ ** * */ 패키지 com.magc.jni; / ** * @author magc * */ public class helloworld {static {system.loadlibrary ( "hello"); } public Native void displayHello (); / ** * @param args */ public static void main (string [] args) {new helloworld (). displayHello (); }} SRC 디렉토리를 입력하고 Java 클래스를 컴파일하십시오.
명령 : javac ./com/magc/jni/helloworld.java
helloorld.java가있는 디렉토리에서 helloworld.class를 생성하십시오
그런 다음 javah를 사용하여 헤더 파일을 생성하십시오.
명령 : javah -jni com.magc.jni.helloworld
현재 디렉토리에서 com_magc_jni_helloworld.h 헤더 파일을 생성하십시오. 이 파일은 C 및 C ++ 프로그램에서 사용하여 기능을 참조하고 구현합니다.
프로그램 목록 2 : com_magc_jni_helloworld.h
/ *이 파일을 편집하지 마십시오 - 그것은 machine */ #include <jni.h>/ * 클래스 com_magc_jni_helloworld */ #ifndef _included_com_magc_jni_helloworld #define _included_com_magc_jni_helloworld __cplus __cplus _ __cplus volld #helloworld #hellogus {#endif / * * 클래스 : com_magc_jni_hellowld * 메소드 : displayHello * 서명 : () v * / jniexport void jnicall java_com_magc_jni_hellowld_displayhello (jnienv *, job); #ifdef __cplusplus} #endif #endif 참고 : 1)이 헤더 파일에는 사용자 컴파일이 필요하지 않으며 다른 C 및 C ++ 프로그램에서 참조하는 데 직접 사용됩니다.
2) Java_com_magc_jni_helloworld_displayhello (jnienv *, jobject) 메소드이 헤더 파일의 메소드는 향후 동적 링크 라이브러리와 상호 작용하기위한 인터페이스이며 이름은 일관성이 있어야합니다.
프로그램의 목록 3 : SRC/JNI_HELLOWORLDIMPL.CPP
#include <jni.h> #include "com_magc_jni_helloworld.h"#include <stdio.h> jniexport void jnicall java_com_magc_jni_hellowld_displayhello (jnienv *env, jabj) {jni_helly_hoorld.cpp ( "jni_helly_hoorld. : "); printf ( "Hello World! /n"); 반품;} 이 C ++ 파일은 위 헤더 파일의 함수를 구현합니다. 메소드 함수 이름은 일관성이 있어야합니다.
동적 라이브러리를 컴파일하고 생성하여 libhello.so,
명령 : g ++ -샤드 -i/usr/lib/jvm/java -6 -openjdk/포함 jni_helloworldimpl.cpp -o libhello.so
성공 후 동적 링크 라이브러리 Libhello.so 파일이 현재 디렉토리에서 생성됩니다.
특정 구현의 동적 라이브러리를 사용하면 Java를 실행하여 JNI 프로그램 클래스의 기본 메소드를 호출 할 수 있습니다.
명령 : java -djava.library.path =. com.magc.jni.helloworld
입력 결과는 다음과 같습니다.
읽어 주셔서 감사합니다. 도움이되기를 바랍니다. 이 사이트를 지원 해주셔서 감사합니다!