1.2.2 《jni specification》
文章平均质量分 84
1.2.2 《jni specification》
vimer-hz
书是越读越薄的
展开
-
chapter13 JNI Functions
2 GetField,SetField:获取一个实例的域/设置一个实例的域。类名:"java/lang/String" //class name。签名:"Ljava/lang/Object" //signature。//注意,这三个接口只是由VM为JNI导出的三个符号!Throw:丢弃一个现有的异常对象,在当前线程触发一个新的异常。检查是否发生了异常,若有异常返回该异常的引用,否则返回NULL。翻译 2023-04-12 22:31:53 · 65 阅读 · 0 评论 -
chapter12 JNI Types
It can be derived from a fully qualified class or interface name as defined in The Java™ Language Specification by substituting(替换) the “.” character with the “/” character.Java的char和Jni的jchar是Unicode格式,占两个字节.Primitive Types 基本类型。C|C++中的char对应的是。翻译 2023-04-12 22:28:07 · 66 阅读 · 0 评论 -
chapter10 Traps and Pitfalls
当D的构造函数调用C的接口f时,native接口Java_C_f里的jobject参数是D的对象,cls指向D类,fid代表的是D.i。这可能不是我们想要的。jboolean是一个8位的unsigned类型,值范围为0~255.0对应JNI_FALSE,1~255对应JNI_TRUE.对于32位变量n(256的低8位为0),本应该判断为JNI_TRUE,实际判断为JNI_FLASE.对于32位或16位的变量a赋值给jboolean时,如果a的低8位为0会出现逻辑问题.FID_C_i缓存的是C类变量i的域.翻译 2023-04-12 22:30:07 · 64 阅读 · 0 评论 -
chapter8 Additional JNI Features
(2)局部引用(Local Reference)只在创建它们的线程里有效。如果是多线程,需要将局部引用(Local Reference)转换为全局引用(Global Reference).jobject转换为jclass需要static_cast(jobject),即基类转换为子类需要static_cast.java层对应的线程同步方法有Object.wait, Object.notify, and Object.notifyAll。JNI函数的两种注册方式:动态注册和静态注册.翻译 2023-04-12 22:29:21 · 58 阅读 · 0 评论 -
chapter5 Local and Global References
NULL,第二次调用C.f()时,MyNewString()不会再调用FindClass,不会生成新的localRef.此时stringClass是无效的localRef,可能导致系统crash.FindClass返回了java.lang.String的localRef(stringClass),在第一次C.f()方法return后,虚拟机释放了C.f()期间创建的所有localRef,包括stringClass.全局引用保证对象不被垃圾回收,弱全局引用不会保证对象不被垃圾回收.翻译 2023-04-12 22:25:34 · 67 阅读 · 0 评论 -
chapter3 Basic Types, Strings, and Arrays
GetIntArrayRegion的第三个参数0表示arr的起始索引,第四个参数10表示要拷贝的元素个数.JNIEXPORT和JNICALL宏(jni.h头文件定义)确保这个函数会从native库中导出.UTF-8格式的字符串以'\0'结束,Unicode格式的字符串不以'\0'结束.(1)UTF-8 char 1字节。(2)Unicode jchar 2字节。//不能在函数返回前删除,应该在外部用完后删除。扩充:根据row和column创建二维数组。翻译 2023-04-12 22:16:12 · 63 阅读 · 0 评论 -
chapter4 Fields and Methods
(2)类域对应的是Static函数,对于类来说static变量唯一。类域:每个类的实例有相同的变量,因为对于类来说,static唯一.static方法形参是cls,local方法的形参是obj.实例域:每个类的实例有各自的变量.域有两种:实例域和类域.构造函数""翻译 2023-04-12 22:23:03 · 53 阅读 · 0 评论 -
JNI函数接口大全
[0 整理思路]由参考资料[1]中第十三章"JNI Functions"中,我们可以将jni functions大致分为如下四大类:1 由VM直接导出的调用接口函数2 ...原创 2019-01-29 12:17:36 · 2126 阅读 · 1 评论