MIDP2.0及其移植技术分析
摘要:MIDP即移动信息设备规范,是专门基于资源和网络连接有限的移动设备之上的J2ME应用规范。本文在分析MIDP2.0的基础上,详细阐述MIDP的事件处理、文件系统、用户图形接口和网络等主要部分在不同平台间移植的实现过程。
关键词:J2ME MIDP 移植 平台无关 本地代码
1 MIDP2.0简介
随着现代信息化社会的发展,小型移动通信设备已经从最初的一种单纯的通信工具转变成如今集通信、工作、娱乐等功能为一体的综合设备;但仅有这些还不能满足用户的要求。个性永远是千变万化的,时尚也不会始终为一种模式。因此,在移动终端上开发通用的、丰富的应用已成为必然的趋势。这些应用可以按用户的意愿随时安装和删除。
J2ME(JAVA2 Micro Edition)正是这样一种JAVA应用开发平台。实际上,JAVA语言从其诞生起就以其运行的平台无关性这一强大的优势而成为网络应用的宠儿。J2ME是JAVA2标准版本的微型版本,专门为小型移动设备所设计。这些设备处理器的处理能力都不强,可使用的资源也有限。因此,J2ME只包含了J2SE中在移动通信设备上所必需的功能和组件,使其能够在移动设备及其有限的资源上开发出丰富多彩且平台无关的应用。J2ME在结构上分为CDC(Connecte Device Configuration)和基于其上,以Foundation Profile为主的规范,以及CLDC(Connecte Limited Device Configuration)和基于其上,以MIDP为主的规范。
MIDP(Mobile Information Device Profile)是移信息设备规范的简称。规范具体定义了J2ME适用的硬件和软件框架,并提供了这个框架要实现的基本功能及其标准接口;而应用开发者就可以基于这个框架开发出各种应用。2000年9月,SUN公司发布了MIDP的第一个正式版本MIDP1.0。它将J2ME适用的设备定位在至少拥有数百KB RAM和ROM,并具有基本网络和显示功能的移动通信设备上;在该基础上定义了一系列软件接的移动通信设备上;在该上基础上定义了一系列软件接口,其中包括基本输入输出、图形化用户接口(GUI)、网络、事件机制、文件系统、应用管理系统(AMS)等之后,随着JAVA技术的不断发展和用户需求的不断提高,SUN公司又于2002年11月发布了MIDP2.0。它对设备的内存资源和处理能力的要求较1.0要高,但MIDP2.0也为应用开发者提供了更方便、更丰富多彩的软件包,主要增加了游戏接口的实现、声音输出接口的实现安全网络机制的实现。MIDP2.0的这些特性将使基于移动设备的JAVA应用具有更加广阔的前景,也必将使新一代的移动设备发生革命性的变化并领导时尚潮流。MIDP2.0接口包如表1所列。
表1 MIDP2.0接口包及其功能
包 | 功 能 |
javax.microedition.lcdui | 提供一系列用户界面接口 |
javax.microedition.lcdui.game | 专门用于游戏设计的接口 |
javax.microedition.rms | 数据管理,用于保存数据记录 |
javax.microedition.midlet | JAVA应用管理接口 |
javax.microedition.io | 基本网络连接接口 |
javax.microedition.media | 媒体接口规范(JSR-135)的实现包 |
javax.microedition.media.control | 媒体播放器的控制类 |
javax.microedition.pki | 数字签名规范的实现接口(用于安全网络) |
java.io | JAVA基本输入输出接口 |
java.lang | JAVA基本数据类型接口 |
java.util | JAVA基本应用接口 |
2 MIDP2.0的移植
既然MIDP2.0是定位在移动通信设备之上的一系列JAVA应用开发接口,我们就必须考虑如何将整个MIDP系统嵌入到特定的硬件设备和其上的操作系统中。只有这样,JAVA应用程序才能运行在该设备上,并利用MIDP提供的强大功能将用户带入一个全新的JAVA世界。在一个完全不同的操作系统平台上,用该平台上对应的系统API调用(或一系列操作),替换MIDP参考实现中所有与操作平台相关的调用(或操作),使MIDP能在目标平台上正确地执行所有要求的功能;同时,调用该平台上特有的能充分发挥目标设备硬件特性的接口,替换参考实现中相应的接口,使MIDP能在目标平台上更高效地运行,这个过程就称为MIDP的移植。
MIDP由许多不同的部分组成,每一部分完成MIDP一个特定的功能接口。其中需要移植的部分主要包括事件处理、文件系统、用户图形化接口、网络、AMS、多媒体。它们都分为高端的JAVA层和低端的本地方法层。JAVA层是用JAVA语言实现的,由KVM解释执行;因此没有涉及到与操作系统平台相关的调用和操作,可以不经修改就在任何操作平台上运行,是平台无关的(PlateForm Independent)。它的移植主要是为满足用户的特殊要求而进行的个性化工作。本地方法层(NativeCode)是指为提高代码的执行效率,保持JAVA语言的平台无关性而使用C语言实现的部分MIDP功能的代码。本地即是指它是与当前的操作平台相关的,它的移植才是涉及到具体平台和执行效率而进行的具体调用和操作的替换过程,其结构如图1所示。
下面,我们就具体到MIDP的每一个部分的移植进行讨论。
2.1 事件处理
MIDP的事件处理部分要处理的事件主要来自两个方面:①来自虚拟机底层的事件,如虚拟机