浅谈JNI技术在嵌入式软件开发中的应用_第1页
浅谈JNI技术在嵌入式软件开发中的应用_第2页
浅谈JNI技术在嵌入式软件开发中的应用_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、浅谈JNI技术在嵌入式软件开发中的应用引言嵌入式系统是以应用为中心、以计算机技术为基储软件硬件可裁剪、适应应用系统对功能、可靠性、本钱、体积、功耗严格要求的专用计算机系统。嵌入式软件的根本体系构造包括嵌入式实时操作系统RTS(RealTieperatingSysterrl)、嵌入式设备驱动程序、嵌入式应用程序编程接口(中间件)和嵌入式应用程序。现阶段,计算机应用的普及、互联网技术的实用以及纳米微电子技术的打破,正有力推动着21世纪的工业消费、商业活动、科学实验和家庭生活等领域自动化和信息化进程。全过程自动化产品制造、大范围电子商务活动、高度协同科学实验以及现代化家居生活,为嵌入式产品造就了崭新

2、而宏大的商机。除了沟通信息高速公路的交换机、路由器和调制解调器,构建计算机集成制造系统(IS)所需的数据传输系统DS(DatauniatinSyste)和机器人以及规模较大的家用汽车电子系统,最有产量效益和时代特征的嵌入式产品应数因特网上的信息家电(infratinapplianes,如网络可视 、网络游戏机、电子商务、商务通(PDA)、挪动 以及多媒体产品(如电视机顶盒、DVD播放机、电子阅读机)。众所周知,“一次编程,到处使用的Java软件概念本来就是针对网上嵌入式小设备提出的,几经周折,目前SUN公司已推出了J2E(Java2P1atfrirEditin)针对信息家电的Java版本,其技

3、术日趋成熟,开始投入使用。SUN公司Java虚拟机(JV)技术的有序开放,使得Java软件真正实现跨平台运行,即Java应用小程序可以在带有JV的任何硬软件系统上执行。加上Java语言本身所具有的平安性、可靠性和可移植性等特点,对实现瘦身上网的信息家电等网络设备非常有利,同时对嵌入式设备特别是上网设备软件编程技术产生了很大的影响。2JNI技术实际上,有一种通常被无视的技术可以在很大程度上解决这个难题,那就是JNI(JavaNativeInterfae,Java本地化方法)。图l是JNI技术实现的一般步骤。1编写Java类代码其中,需要JNI实现的方法应当用native关键字声明。在该类中,用S

4、yste1adLibrary()方法加载需要的动态链接库。关键代码如下:pute.javapublilassputepublinativedublep(dubleparas);stati调用动态链接库SysteladLibrary(“athlib);(2)编译成字节代码在这个过程中,由于采用了native关键字声明,Java编译器会无视没有代码体的JNI方法部分。(3)生成相关JNI方法的头文件这个过程的实现一般是通过利用jlavah-jni*lass生成的,也可以手工生成该文件;但是由于Java虚拟机是根据一定的命名标准完成对JNI方法的调用,所以手工编写头文件需要特别小心。上述文件产生的头

5、文件部分代码如下:pute.h;extern“JNIEXPRTjdubleJNIALLJava_pute_p(JNI-Env*,jbjet,jdubleArray);;JNI函数名称分为三部分:首先是Java关键字,供Java虚拟机识别;然后是调用者类名称(全限定的类名,其中用下划线代替名称分隔符);最后是对应的方法名称,各段名称之间用下划线分割。JNI函数的参数也由三部分组成:首先是JNIEnv*,是一个指向JNI运行环境的指针;第二个参数随本地方法是静态还是非静态而有所不同一一非静态本地方法的第二个参数是对对象的引用,而静态本地方法的第二个参数是对其Java类的引用;其余的参数对应通常Ja

6、va方法的参数,参数类型需要根据一定规那么进展映射。(4)编写相应方法的实现代码在编码过程中,需要注意变量的长度问题,例如Java的整型变量长度为32位,而语言为16位,所以要仔细核对变量类型映射表,防止在传值过程中出现问题。(5)将JNI实现代码编译成动态链接库编译过程是利用+编译器实现的,当要使用生成的动态链接库时,调用者类中需要显式调用该链接库。经过上述处理,根本上完成了一个包含本地化方法的Java类的开发。3基于JNI的嵌入式软件开发实例下面通过一个实例来描绘运用JNI技术在上操纵摄像头,捕捉视频并存储图片的过程。(1)活动状态图图2为捕捉视频并存储图片的活动状态图根据图2的活动状态,

7、详细的对应步骤如下:发起该流程。发起流程后,建立文件用于存储图片。用指针获得分配的缓冲器,用于存储获得的郑将指针压栈(序列化缓冲器)。由于的内存较小,为了防止内存泄漏,Sybian操作系统有一个leanupstak的要求,即在使用指针时,用PushL把指针压入栈中,使用完后再用Pp弹出栈假设在中间调用导致崩溃的函数时果真出现了问题,那么leanupstak可以通过调用该指针的析构函数回收占用的空间。操纵摄像头,捕捉视频,并将图像流从摄像头端传到缓冲器。将摄像头内的图像流存入缓冲器内,并将缓冲器内的流转化为文件流,存为jpg格式的文件,将指向缓冲器的指针弹栈。在过程中,假设使用完了序列化的缓冲器

8、,那么要重新序列化缓冲器,以备后面使用。当接收到停顿视频捕捉的信号后,关闭文件。流程完毕。(2)运用JNI技术的视频捕捉子功能捕捉视频的实现是由操纵摄像头、视频播放(解码器准备)以及建立摄像头和之间的连接会话三个活动组成的。其中操纵摄像头是通过调用底层设备的驱动来实现的,需要利用JNI来实现,完成的方法包括准备、建立、删除、销毁摄像头等。视频播放的一系列过程也是通过+代码来实现的,除了准备、建立、删除、销毁解码器外,还有开始、暂停、停顿解码等。建立摄像头和之间的连接类似建立客户端和效劳器连接,视频流从摄像头传到界面是通过多媒体会话来完成的。多媒体会话的建立、关闭、摧毁以及会话建立后的发送、取消、读取数据等也是JNI的应用范畴。结语主张采用纯Java的人们通常反对本地化代码的使用,认为JNI技术会影响程序的可移植性和平安性。还有一些人认为,在Java程序执行的过程中调用+程序只是对过去混合编程技术的简单扩展,其实际目的是为了充分利用大量原有的程序库。其实,不必拘泥于严格的平台独立性限制,因为采用JNI技术只是针对一些严重影响Java性能的代码段。该部分可能只占源程序的极少部分,所以几乎可以不考虑该部分代码在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论