Java 本机接口规范内容
一、简介
Java 本机接口概述
历史背景
JDK 1.0 本机方法接口
Java 运行时接口
原始本机接口和 Java/COM 接口
目标
Java 本机接口方法
编程到 JNI
2.设计概述
JNI 接口函数和指针
编译、加载和链接本机方法
解析本机方法名称
本机方法参数
引用 Java 对象
全球和本地参考
实现本地参考
访问 Java 对象
访问原始数组
访问字段和方法
报告编程错误
Java 异常
异常和错误代码
异步异常
异常处理
3. JNI 类型和数据结构
原始类型
引用类型
字段和方法 ID
值类型
类型签名
修改后的 UTF-8 字符串
4.JNI函数
接口功能表
常量
boolean
返回码
版本信息
GetVersion
版本常量
类操作
DefineClass
FindClass
GetSuperclass
IsAssignableFrom
模块操作
GetModule
线程操作
IsVirtualThread
异常
抛出
ThrowNew
ExceptionOccurred
ExceptionDescribe
ExceptionClear
FatalError
ExceptionCheck
全球和本地参考
全局引用
NewGlobalRef
DeleteGlobalRef
本地参考资料
DeleteLocalRef
EnsureLocalCapacity
PushLocalFrame
PopLocalFrame
NewLocalRef
弱全局引用
NewWeakGlobalRef
DeleteWeakGlobalRef
对象操作
AllocObject
新对象、新对象A、新对象V
GetObjectClass
GetObjectRefType
IsInstanceOf
IsSameObject
访问对象的字段
GetFieldID
获取<类型>字段例程
设置<类型>字段例程
调用实例方法
获取方法ID
Call<type>Method 例程、Call<type> MethodA例程、Call<type> MethodV例程
CallNonvirtual <type> 方法例程、 CallNonvirtual <type> MethodA例程、 CallNonvirtual <type> MethodV例程
访问静态字段
GetStaticFieldID
GetStatic<type>字段例程
SetStatic<type>字段例程
调用静态方法
GetStaticMethodID
CallStatic <type> 方法例程、 CallStatic <type> MethodA例程、 CallStatic <type> MethodV例程
字符串操作
NewString
GetStringLength
GetStringChars
ReleaseStringChars
NewStringUTF
GetStringUTFLength
GetStringUTFChars
ReleaseStringUTFChars
GetStringRegion
GetStringUTFRegion
GetStringCritical,ReleaseStringCritical
数组操作
GetArrayLength
NewObjectArray
GetObjectArrayElement
SetObjectArrayElement
新的<PrimitiveType>数组例程
Get<PrimitiveType>ArrayElements 例程
Release<PrimitiveType>ArrayElements 例程
Get<PrimitiveType>ArrayRegion 例程
Set<PrimitiveType>ArrayRegion 例程
GetPrimitiveArrayCritical、ReleasePrimitiveArrayCritical
注册本机方法
RegisterNatives
UnregisterNatives
监控操作
MonitorEnter
MonitorExit
NIO 支持
NewDirectByteBuffer
GetDirectBufferAddress
GetDirectBufferCapacity
反射支持
FromReflectedMethod
FromReflectedField
ToReflectedMethod
ToReflectedField
Java虚拟机接口
GetJavaVM
5.调用API
概述
创建虚拟机
附加到虚拟机
从虚拟机分离
终止虚拟机
库和版本管理
支持静态链接库
库生命周期函数挂钩
JNI_OnLoad
JNI_OnUnload
JNI_OnLoad_L
JNI_OnUnload_L
调用 API 函数
JNI_GetDefaultJavaVMInitArgs
JNI_GetCreatedJavaVMs
JNI_CreateJavaVM
DestroyJavaVM
AttachCurrentThread
AttachCurrentThreadAsDaemon
DetachCurrentThread
GetEnv