4. 二维数组和 String 数组................................................................................................................106
Chap13:JNI 编程系列之高级篇............................................................................................................108
1. 在一般的 Java 类中定义 native 方法...........................................................................................109
2. 访问 Java 类的域和方法..............................................................................................................109
3. 在 native 方法中使用用户定义的类............................................................................................111
4. 异常处理.......................................................................................................................................111
Chap14:如何在 C/C++中调用 Java.......................................................................................................112
1.环境搭建........................................................................................................................................113
2.初始化虚拟机................................................................................................................................115
3.访问类方法....................................................................................................................................117
3.1.获取指定对象的类定义(jclass).............................................................................................117
3.2.读取要调用方法的定义(jmethodID)....................................................................................118
3.3.调用方法................................................................................................................................120
4 访问类属性....................................................................................................................................120
4.1.获取指定对象的类(jclass).....................................................................................................120
4.2.读取类属性的定义(jfieldID).................................................................................................120
4.3.读取和设置属性值................................................................................................................121
5.访问构造函数................................................................................................................................121
6.数组处理........................................................................................................................................122
7.中文处理........................................................................................................................................123
8.异常................................................................................................................................................125
9.线程和同步访问............................................................................................................................126
10.时间..............................................................................................................................................126
Chap15:基本 JNI 调用技术(c/c++与 java 互调)................................................................................127
Chap16:JNI 的 c 代码中,另外一个线程获取 JNIEnv....................................................................131
chap 17:当 JNI 遇到多线程--java 对象如何被 C++中的多个线程访问?...................................134
chap 18:JNI 在多线程中的应用.........................................................................................................139
chap 19:JNI 限制(多线程).............................................................................................................143
chap 20:使用 Java Native Interface 的最佳实践...............................................................................144
1.性能缺陷........................................................................................................................................145
1.1.不缓存方法 ID、字段 ID 和类............................................................................................145
1.2.触发数组副本........................................................................................................................148
1.3.回访而不是传递参数............................................................................................................149
1.4.错误认定本机代码与 Java 代码之间的界限.......................................................................150
1.5.使用大量本地引用而未通知 JVM.......................................................................................155
2.正确性缺陷....................................................................................................................................156
2.1 使用错误的 JNIEnv...............................................................................................................157
2.2 未检测异常............................................................................................................................157
2.3 未检测返回值........................................................................................................................159
2.4 未正确使用数组方法............................................................................................................159
2.5 未正确使用全局引用............................................................................................................161