引 言
现在Java技术十分流行,发展势头强劲,而且在SUN公司推出了J2ME平台后,众多移动式系统都纷纷支持Java应用程序。由于Java已经成为了业界公认的通用网络语言,具有超强的跨平台性,所以Java这种Write once,Run anywhere的特性被目前几乎所有的手机系统开发商所承认并运用。无一例外,当今的智能手机操作系统都支持KJava技术。为了保证手机操作系统支持运行Java程序,需要将Java虚拟机移植到手机操作系统上。由于手机这种移动式信息设备都采用小容量的Flash和RAM,所以就要求虚拟机体积更小,实时效率更高,故这种Java虚拟机被称为KVM(K Virtual Machine)。
由于J2ME是以消费性产品为目标而设计的Java运行环境,专门针对移动电话、数字机顶盒和汽车导航系统,因而影响力巨大。本文将研究在MTK手机操作系统上实现嵌入式Java。整个J2ME运行平台包括Java应用的下载、安装、运行及触摸屏支持等一系列功能。
1 相关技术研究
1.1 J2ME平台
现在的Java系统是一个全方位的开发、运行平台,可以在任何计算环境中实现。在嵌入式系统,SUN公司推出了J2 ME(Java 2 platform Micro EdiTIon)。
J2ME是Java 2标准版本的微型版本,支持各种各样的消费类产品和嵌入式设备,如移动电话、PDA、互联网可视电话、数字机顶盒、车载娱乐和导航系统、网络交换设备以及信息家电等。J2ME是为了那些使用有限的能源、有限的网络连接(通常是无线连接)以及有限图形用户界面能力的设备开发的。
J2ME体系结构如图1所示。其中简表层、配置层和Java虚拟机是J2ME的组成部分。J2ME是一个简化的Java,是针对各种不同的低端设备而设计的。为了满足各种环境,J2ME设计了简表一配置规范。配置是一个语言特性和核心类的配置规范,针对不同的环境(内存、显示、网络连接和处理能力) 给定不同的配置。也就是定义了该环境的Java语言子集和核心类库,虚拟机开发者遵照此配置来开发虚拟机。最著名的两个配置是连接设备配置(CDC)和连接有限设备配置(CLDC)。
CLDC包括K虚拟机(KVM)和一组核心类库,主要是针对用户接口简单、内存较小、网络运行时连时断以及带宽较窄的小型无线设备。其中KVM是JVM的一个实现,特别用于移动电话、PDA等设备。
简表是针对相同配置的不同特性而开发的扩展类库,它提供给开发者在特定类型设备上开发的类库。例如,移动信息设备子集MIDP(Mobile Information Device Pro—file)综合考虑了移动设备的屏幕和内存限制,定义了J2ME适用的硬件和软件框架,并提供了这个框架要实现的基本功能及标准接口;应用开发者可以基于这个框架开发出各种应用。MIDP 2.0定义了一系列软件接口,包括基本输入输出、图形用户接口、网络、事件机制、文件系统、应用管理系统、游戏接口、声音输出接口和安全机制。
由于CLDC的设备资源受到限制,所以SUN公司专门开发了一个新的虚拟机KVM。Sun公司于2000年公布了KVM的参考实现,采用解释执行字节码的Java虚拟机。与编译执行相比,解释执行的Java虚拟机在移动通信设备上具有显著的优点:虚拟机占用移动通信设备非易失性存储空间比较小;虚拟机运行时占用RAM空间比较小;解释执行核心代码量小;字节码占用RAM空间比较小;实现难度低,可移植性好。现有的具有KVM支持的移动通信设备大多是基于该参考实现的。
1.2 MTK系统
MTK方案是台湾联发科技公司提供的手机解决方案。近70%的国产手机采用MTK的芯片和平台。有资料显示,2007年MTK手机芯片出货量高达 1.5亿片,全球市场占有率近14%,仅次于德州仪器及高通公司。若只计算MTK进入全球GSM手机芯片的市场规模,大约省7亿~8亿部手机,市场占有率已高达20%以上,排名仅次于德州仪器公司。
在目前MTK市场上,MTK6225平台占据主导地位。该系统的主要功能如下:
①任务管理。系统任务采用静态创建方式,静态配置任务优先级、栈大小、任务全局唯一ID等;不提供动态创建Task的方式;任务内部以及任务之间的通信通过内部事件队列和外部事件队列完成。
②内存管理。平台不提供动态分配内存的方式;应用程序需要使用动态分配内存时,可以采用以下几种方式:与系统其他模块共享内存,典型的是使用MED 模块的内存;定义一个静态数组,交给系统adm托管,然后调用kal_adm_alloc、kal_adm_free等内存操作函数实现动态内存分配;定义一个静态数组,应用自己实现基于此数组的分配和管理,也就是实现自己的内存管理模块。