JNI 是 Java native interface 的简写,可以译作 Java 原生接口。 Java 可以通过 JNI 调用 C/C++ 的库,这对于那些对性能要求比较高的 Java 程序无疑是一个 福音。
使用JNI也是有代价。大家都知道JAVA程序是运行在JVM之上的,可以做到平台无关。但是如果Java程序通过JNI调用了原生的代码(比如 c/c++等),则Java程序就丧失了平台无关性。最起码需要重新编译原生代码部分。所以应用JNI需要好好权衡,不到万不得已,请不要选择JNI,可 以选择替代方案,比如TCP/IP进行进程间通讯等等。这也是为什么谷歌的Android平台的底层虽然用JNI实现,但是他不建议开发人员用JNI来开 发Android上面的应用的原因。将会丧失Android上面的应用程序平台无关性。
下面是在linux下java jni调用C语言动态链接库的具体操作步骤。
1、创建一个Java程序(Hello.java)定义原生的c/c++函数。
2、用javac编译Hello.java生成Hello.class。
3、用javah带-jni参数编译Hello.class生成Hello.h文件,该文件中 定义了c的函数原型。在实现c函数的时候需要。
4