版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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年江西南昌旅游集团有限公司人员招聘笔试参考试题及详细答案解析
- 2026年花画工艺品制造行业前景分析报告及未来五至十年创新驱动与生态构建
- 2026年扳手行业洞察报告及未来五至十年发展趋势报告
- 行政主管员工满意度调查绩效表
- 智能手环健康监测与使用手册
- 2026年人造原油行业洞察报告及未来五至十年发展趋势报告
- 智能家电用户智能电饭煲使用指南
- 2026年植物激素行业洞察报告及未来五至十年发展趋势报告
- 2026年国家能源集团甘肃公司人员招聘考试备考试题及详细答案解析
- 商洽新产品上市推广计划的时间安排通知函(6篇)范文
- 石材外墙合同范例
- GB/T 44748.1-2024筛分试验第1部分:使用金属丝编织网和金属穿孔板试验筛的方法
- 新中国赞歌 课件 2024-2025学年浙人美版(2024)初中美术七年级上册
- 第三届全国生态环境监测专业技术人员大比武广东省赛试题库(含答案)
- 电子天平的使用-课件
- 应用PDCA提高入院宣教的知晓率
- 深静脉血栓(DVT)课件
- QCSG1140022023年电力设备预防性试验规程
- 魅力黔东南2-(2)课件
- 瑞士CYBELEC DNC 60系统使用说明书
- 高三物理动量和能量的综合应用 板块模型
评论
0/150
提交评论