您现在的位置: 论文网 >> 计算机论文 >> 计算机应用论文 >> 浅谈JNI技术在嵌入式软件开发中的应用论文

浅谈JNI技术在嵌入式软件开发中的应用

作者:未知
出处:论文网
时间:2007-05-14


上述文件产生的头文件部分代码如下:
//Compute.h
;
extern“C”{
JNIEXPORT jdoubleJNICALL Java_Compute_comp(JNI-Env *, jobject, jdoubleArray);
;
JNI函数名称分为三部分:首先是Java关键字,供Java虚拟机识别;然后是调用者类名称(全限定的类名,其中用下划线代替名称分隔符);最后是对应的方法名称,各段名称之间用下划线分割。
JNI函数的参数也由三部分组成:首先是JNIEnv *,是一个指向JNI运行环境的指针;第二个参数随本地方法是静态还是非静态而有所不同一一非静态本地方法的第二个参数是对对象的引用,而静态本地方法的第二个参数是对其Java类的引用;其余的参数对应通常Java方法的参数,参数类型需要根据一定规则进行映射。
(4)编写相应方法的实现代码
在编码过程中,需要注意变量的长度问题,例如Java的整型变量长度为32位,而C语言为16位,所以要仔细核对变量类型映射表,防止在传值过程中出现问题。
(5)将JNI实现代码编译成动态链接库
编译过程是利用C/C++编译器实现的,当要使用生成的动态链接库时,调用者类中需要显式调用该链接库。
经过上述处理,基本上完成了一个包含本地化方法的Java类的开发。


3 基于JNI的嵌入式手机软件开发实例
下面通过一个实例来描述运用JNI技术在手机上操纵摄像头,捕捉视频并存储图片的过程。
(1)活动/状态图
图2为捕捉视频并存储图片的活动/状态图
根据图2的活动/状态,具体的对应步骤如下:
①发起该流程。
②发起流程后,建立文件用于存储图片。
③用指针获得分配的缓冲器,用于存储获得的帧。
④将指针压栈(序列化缓冲器)。由于手机的内存较小,为了防止内存泄漏,Symbian操作系统有一个Cleanup stack的要求,即在使用指针时,用PushL把指针压入栈中,使用完后再用Pop弹出栈.如果在中间调用导致崩溃的函数时果真出现了问题,那么 Clean up stack可以通过调用该指针的析构函数回收占用的空间。
⑤操纵摄像头,捕捉视频,并将图像流从摄像头端传到缓冲器。
⑥将摄像头内的图像流存入缓冲器内,并将缓冲器内的流转化为文件流,存为jpg格式的文件,将指向缓冲器的指针弹栈。
⑦在过程⑥中,如果使用完了序列化的缓冲器,则要重新序列化缓冲器,以备后面使用。
⑧当接收到停止视频捕捉的信号后,关闭文件。
⑨流程结束。

(2)运用JNI技术的视频捕捉
子功能捕捉视频的实现是由操纵摄像头、视频播放(解码器准备)以及建立摄像头和手机之间的连接会话三个活动组成的。其中操纵摄像头是通过调用底层设备的驱动来实现的,需要利用JNI来实现,完成的方法包括准备、建立、删除、销毁摄像头等。视频播放的一系列过程也是通过c++代码来实现的,除了准备、建立、删除、销毁解码器外,还有开始、暂停、停止解码等。建立摄像头和手机之间的连接类似建立客户端和服务器连接,视频流从摄像头传到手机界面是通过多媒体会话来完成的。多媒体
会话的建立、关闭、摧毁以及会话建立后的发送、取消、读取数据等也是JNI的应用范畴。


结语
主张采用纯Java的人们通常反对本地化代码的使用,认为JNI技术会影响程序的可移植性和安全性。还有一些人认为,在Java程序执行的过程中调用c/c++程序只是对过去混合编程技术的简单扩展,其实际目的是为了充分利用大量原有的c程序库。
其实,不必拘泥于严格的平台独立性限制,因为采用JNI技术只是针对一些严重影响Java性能的代码段。该部分可能只占源程序的极少部分,所以几乎可以不考虑该部分代码在主流平台之间移植的工作量。同时,也不必过分担心类型匹配问题,完全可以控制代码不出现这种错误。此外,也不必担心安全控制问题,因为 Java安全模型已扩展为允许非系统类加载和调用本地方法,即如果在Java程序中直接调用c/c++语言产生的机器码,该部分代码的安全性就由Java 虚拟机控制。

上一页 [1] [2]

论文搜索
关键字:JNI技术 嵌入式软件
最新计算机应用论文
基于网络信息安全技术管理的计算机应用研究
浅析人工智能体系建设
抖音短视频平台视频推荐模式研究
应用电子技术中可编程控制器的应用探讨
用友NC信息系统的实施应用实践研究
基于校园一卡通数据系统的学生行为分析研究
云环境下基于蚁群算法的动态容错技术研究
自拍图像中的记忆痕迹
抖音短视频用户使用动机研究
基于创新扩散理论的Vlog传播
热门计算机应用论文
学生成绩管理系统的设计与实现
浅析计算机病毒及防范的措施
学籍管理系统软件
对计算科学与计算机发展的思考
计算机应用型人才的培养模式研究
物资管理信息系统开发
计算机信息管理在第三方物流中的应用
嵌入式系统数字图像采集接口电路设计
基于B/S体系结构开发应用系统
项目管理在软件中的应用