前段时间探究了点关于JNI技术方面的东西,在网上找,发现关于这方面的东西不多
基本上也是找不到,因此就决定写下来,作个笔记:
JNI:
JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它容许Java代码和其余语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤为是C和C++而设计的,
可是它并不妨碍你使用其余语言,只要调用约定受支持就能够了。
咱们知道Java是一种平台无关性的语言,平台对于上层的java代码来讲是透明的,因此在多数时间咱们是不须要JNI的
但在下面这几种状况下你可能会用到JNI技术:
1.你的Java代码,须要获得一个文件的属性。可是你找遍了JDK帮助文档也找不到相关的API。
2.在本地还有一个别的系统,不过他不是Java语言实现的,这个时候你的老板要求你把两套系统整合到一块儿。
3.你的Java代码中须要用到某种算法,不过算法是用C实现并封装在动态连接库文件(DLL)当中的。html
对于上述的三种状况,若是没有JNI的话,那就会变得异常棘手了。就算找到解决方案了,也是费时费力。其实说到底仍是会增长开发和维护的成本。java
我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,立刻就要抢光了。
对于JNI来讲:其具体步骤以下:
1.先对Java文件对应编译 javac filename.java
filename.java文件内容eg.算法
2.生成对应的.h文件 javah -jni filename此命令执行完后在目录中会生成HelloWorld.h文件,该文件中国包含了一个函数java_HelloWorld_print的声明。函数