一丶定义:
英文缩写 Java Native Interface(JNI),它允许java代码和其他语言写的代码进行交互,JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,只要调用约定受支持就可以了.
二丶为什么使用JNI?
1.JNI扩展了Java虚拟机的能力,因为java不能直接和硬件交互,不能开发驱动
2.java代码效率一般要低于c代码,而Native Code效率高,因此在数学运算,实时渲染的游戏上以及音视频处理上都需要用Java调用C语言.
3.复用C/C++代码,C语言经过几十年的发展,已经形成了强大的类库(比如人脸识别,文件压缩,opencv,7zip,ffmpeg等),这些类库我们没必要用java语言重新实现一遍,通过JNI直接
调用这些类库即可.
4.特殊的业务场景,比如电视,车载系统,微波炉等跟硬件直接相关的开发
三丶怎么调用JNI?
1.在Android开发的libs目录下添加XXX.so文件,不过XXX.so文件需要放在对应的CPU架构名目录下,比如arm,x86等.
2.在java代码中通过System.loadLibrary(libName);加载so文件,同时c语言中的方法在java中必须以native关键字来声明.普通java方法调用这个native方法借口,虚拟机内部自动调用so文件中对应的方法.