JNI:Java native interface
开篇
Java是跨平台的语言,但是有时候仍然需要调用本地代码(这些代码是C/C++写的)
Sun公司提供JNI是Java平台的一个功能强大的接口,这个jni接口提供了Java与操作系统本地代码互相调用的功能
最简单的Java调用C/C++代码的步骤
1首先在Java类中声明一个native的方法
2使用Javah命令生成包含native方法定义的C/C++头文件
3按照生成的C/C++头文件来写C/C++源文件
4将C/C++源文件编译成动态链接库(DLL)
5把DLL文件加入到path环境变量下
6Java类中加载DLL,然后调用声明的native方法
在eclipse中创建native工程:
在cmd中:
这样生成了一个C/C++的头文件,在c文件中引用该头文件,然后编写源文件实现,
注意:头文件中引用的有些头文件是jdk提供的,要到jdk下去找,比如jni.h和jni_md.h
然后在Java中调用
使用JNI的二个弊端
1使用JNI,那么这个Java Application将不能跨平台了。如果要移植到别的平台上,那么native代码就需要重新进行编写
2Java是强类型语言,而C/C++不是。因此,你必须在写JNI时更加小心
总之,必须在构建Java程序的时候,尽量少用本地代码