Java Native Interface.
使用场景:
- 需要调用Java语言不支持的依赖于操作系统平台特性的一些功能。
- 为了整合一些以前的非Java语言开发的系统。
- 为了节省程序的运行时间,必须采用其他语言(比如C/C++)来提升运行效率。
Native方法注册
- 静态注册
- 动态注册
数据类型的转换
- 基本数据类型的转换
- 引用数据类型的转换
方法签名
- 将参数类型和返回值类型组合在一起作为方法签名
解析JNIEnv
JNIEnv是Native世界中Java环境的代表,通过JNIEnv *指针就可以在Native世界中访问Java世界的代码进行操作,它只在创建它的线程中有效,不能跨线程传递,因此不同线程的JNIEnv是彼此独立的。
引用类型
本地引用(Local References):自动释放,不能跨线程,受JVM管理。
全局引用(Global References):手动释放,跨线程,不受JVM管理。
弱全局引用(Weak Global References):类似全局引用,可被GC回收,GC回收后指向NULL。