1. JNI是什么?
java native interface (java本机接口)
比如方法声明:
public final native Class<?> getClass(); (来自源码Object.java)
上面方法没有方法体,但是它不是抽象方法,它是具体方法,因为它加了native修饰了,说明这个方法是使用底层C实现的。
java提供JNI这个接口规范,可以去调用其他程序语言编写的功能模块(不必要利用java重新开发),可以调用C/C++,或者VB等等。
2. 为什么要使用JNI?
(1)需求(钱)
(2)高性能(C/C++实现效率高)
(3)物联网建设
(4)C开源组件(C开源组件很丰富,使用JNI调用这些C开源组件)
3. 怎么学JNI?
(1)java基础
Linux系统由于开源性,性能非常完善稳定,而且针对的病毒也很少,所以Linux系统常用作服务器系统(看中Linux的安全,稳定)
(2)C语言基础
(3)JNI角色
JNI是一种协议规范(和JVM类似,JNI也是翻译官的角色),把C代码通过JNI协议规范,把它翻译成相应的java代码,逻辑图如下: