版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C04_aJNI:必要的优基化於軟硬设整合计觀點(a)By 高煥堂內容1. 创建C+类的对象2. 优化目的:维护本地函数的稳定性3. 原则4. Java与C+对象之间的对称关连5. Java与C+对象之间的对称关连1、创建C+基类於軟硬的整合对觀點象 在JNI的C模块里,不仅能创建Java层的对 象,也可以创建C+类别的对象,如下图: 上图的JNI接口层是以C语言实作的本地函数。 在逻辑上,这些C函数仍属于Java类(即定义的类) 。 典型的架构共分为三个层级:Java层、C层和C+层;其间可以互相沟通与合作。C和C+代码可以摆在同一个*.so里。多个Java类的C函数(即多个的实现代码)可以
2、摆在同一个*.so里。nnnnn/* com.misoo.counter.Counter.c */ .JNIEXPORT void JNICALLJava_com_misoo_counter_CounterNative_nativeSetup (JNIEnv *env, jobject thiz) / .JNIEXPORT jobject JNICALL Java_com_misoo_counter_actNative_nativeExec(JNIEnv *env, jclass clazz) / 2、优化目的:基於軟硬整合觀點维护本地函数的稳定性不宜仰赖C层的*.so的全局变量来储存Java
3、层或C+层的对像(指针或参考)。依赖C层(全局或静态变量)来储存C+对象指针, 或者储存Java层对象参考,这常常让C层模块与特定C+对象或Java对象绑在一起,产生紧密的相依性,导致系统弹性的下降。本节的范例将以优越的设计化解这项困境。/* com.misoo.counter.Counter.c */ jobjectJNIEXPORT void JNICALLJava_com_misoo_counter_CounterNative_nativeSetup (JNIEnv *env, jobject thiz) jclass clazz = (*env)-GetObjectClass(env,
4、 thiz); m_object = (jobject)(*env)-NewGlobalRef(env, thiz);/ jclass rvClazz = (*env)-FindClass(env,com/misoo/counter/ResultValue); jobject ref = (*env)-NewObject(env, rvClazz, constr); m_rv_object = (jobject)(*env)-NewGlobalRef(env, ref);m_object, m_rv_object ;/* com.misoo.counter.Counter.c */jobjec
5、tm_object, m_rv_object ;JNIEXPORT void JNICALLJava_com_misoo_counter_CounterNative_nativeSetup (JNIEnv *env, jobject thiz) / ./. 由于ResultValue对象是在run-time时期动态创建的,如果有多个对象时,该如何储存呢? 如果多个Java线程并行地(Concurrently)执行这个本地函数,共享了m_object和m_rv_object变量,如何确保线程之间不互相冲突呢? C层的全局或静态(static)变量只适合储存静态的数据,例如methodID或fieldID值。/* com.misoo.counter.Counter.c */jfieldIDm_fid;JNIEXPORT void JNICALLJava_com_misoo_counter_CounterNative_nativeSetup (JNIEnv *env, jobject thiz) / ./.m_fid = (*env)-GetFieldID(env, clazz, numb, I); 这m_fid储存的是类的属性ID,静态对静态关系,是合理的。 Java层的每一个CounterNative类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年Gemini优化公司TOP3权威测评:9年资质壁垒与央媒直连如何碾压新入局者
- 烧脑推理密室协议
- 商业活动现场秩序维护协议
- 医疗机构麻精药品管理
- 2025年临沂费县县直医疗卫生事业单位招聘卫生类岗位工作人员考试真题
- 2025年中国海关博物馆人员招聘真题
- 2025年衡阳市南岳区招聘事业单位工作人员考试真题
- 《数控加工编程与操作2》课件-3.1.2 曲面特征简介
- 2026年成都锦江中医专科医院医护人员招聘笔试模拟试题及答案解析
- 2026江西融思科技有限公司第二批岗位招聘11人笔试备考试题及答案详解
- ST段抬高型心肌梗死诊断治疗指南汇编
- 2026中国海洋石油集团有限公司秋季校园招聘备考考试题库附答案解析
- 天津中考物理5年(21-25)真题分类汇编-测量液体和固体的密度
- 江苏省常州市2025年中考物理真题(含答案)
- 去极端化课件
- 内镜间质瘤护理课件
- QC/T 544-2025汽车发动机凸轮轴
- 2025年山东省委党校在职研究生招生考试(政治理论)历年参考题库含答案详解(5卷)
- 油水井大修工艺技术课件
- 子宫内膜恶性肿瘤的护理查房
- 同业存款利率管理办法
评论
0/150
提交评论