JNI:是java本地接口,是jdk的一部分,通过jni可以在JAVA程序中使用非JAVA语言开发的类或应用程序。
实现jni步骤:
1、在java类中声明native方法(表明这个方法使用java以外的语言实现 ),使用System.loadLibrary("hello"),它是在静态初始化块中定义的,系统用来装载hello共享库,这就是我们在后面生成的hello.dll(如果在其他的操作系统可能是其他的形式,比如hello.so) ,并编译。
[code]public native void displayHelloWorld();[/code]
[code]System.loadLibrary("hello")[/code]
2、用javah生成.h文件
3、用其他语言如/cc++实现native方法,并生成动态连接库
4、将c/c++动态连接库放到工作目录,用java命令运行
注意:一般java应用程序通过jre、jvm,最后调用底层函数,但是使用jni,越过jre、jvm直接调用非java语言编写的底层函数,有安全隐患,需要在java级别,即执行权限尚未穿过jvm前,完成安全的限制。
实现jni步骤:
1、在java类中声明native方法(表明这个方法使用java以外的语言实现 ),使用System.loadLibrary("hello"),它是在静态初始化块中定义的,系统用来装载hello共享库,这就是我们在后面生成的hello.dll(如果在其他的操作系统可能是其他的形式,比如hello.so) ,并编译。
[code]public native void displayHelloWorld();[/code]
[code]System.loadLibrary("hello")[/code]
2、用javah生成.h文件
3、用其他语言如/cc++实现native方法,并生成动态连接库
4、将c/c++动态连接库放到工作目录,用java命令运行
注意:一般java应用程序通过jre、jvm,最后调用底层函数,但是使用jni,越过jre、jvm直接调用非java语言编写的底层函数,有安全隐患,需要在java级别,即执行权限尚未穿过jvm前,完成安全的限制。