1.2 Java ME体系结构
Java ME是专门面向小型手持设备,用于嵌入式应用软件开发的平台,可以应用于移动电话、个人数字助理(PDA)、网络IP电话、机顶盒、家庭娱乐多媒体系统、信息家用电器及车载导航等系统中。
Java ME面对的是大量不同的设备,这种不同不仅表现为硬件结构的不同,还表现为功能应用的不同。为了适应众多不同设备的需求,Java ME在组织这些设备的软件时采用了分层的概念,它将运行在硬件上的软件分成若干个层次,如图1-1所示。
图1-1 J2ME软件的层次结构
1.本地操作系统
在软件的底层是本地操作系统(Host Operating System),它负责管理和配置该手持设备的所有硬件,也就是说,其他所有的软件必须通过本地操作系统才能使用硬件资源。当前流行的操作系统主要有以下几种:
● 用于开发移动电话的Symbian、Linux、Windows Pocket PC、Palm OS以及最近迅速发展的iPhone和Android等;
● 用于开发其他嵌入式设备的VxWorks、Linux、Windows CE等。
2.虚拟机
在操作系统之上是Java虚拟机(Java Virtual Machine,JVM)。所有的Java程序只能运行在JVM上,为此,要实现Java开发平台必须首先实现JVM。对于Java ME的标准参考实现的虚拟机有CVM和KVM两种。
CVM虚拟机:允许设备将Java 线程映射为本地线程,完成垃圾收集、Java同步等功能;在可移植性方面,采用C语言实现,可实现快速、安全的移植。CVM虚拟机适用于瘦客户端,如数字电视机顶盒、车载电子系统等。
KVM虚拟机:KVM的最大特点是小而高效,只需要几万字节的存储空间就可以运行。KVM虚拟机和类库只需占有K量级的存储空间,即50~80KB,具有较高的可移植性和可扩展性。KVM专门执行下载到低端CLDC设备上的MIDlet程序。KVM虚拟机是根据资源受限设备完全重新编写的,它不是现有标准Java虚拟机的改进产品。KVM虚拟机常应用于那些电池供电的手持移动设备,如移动电话、PDA等。
CVM 和 KVM 适用的硬件资源,前者高后者低,根据不同的硬件可以选择不同的虚拟机。KVM在功能上是CVM的子集。
虽然Sun公司推荐CVM和KVM作为Java ME的虚拟机,但这不是必须的,实际上,只要满足配置中的规范定义,通过兼容性测试就可以作为虚拟机应用在小型设备上。
3.配置
在虚拟机之上的软件层次是配置(Configuration)。Java ME支持的硬件有很大的差异,不可能构建一个适用于所有设备的开发平台。为了满足不同设备的开发需求,Java ME引入了配置的概念,屏蔽了不同硬件设备的物理特性。它包含一些核心的类库,定义了Java虚拟机类型和一些基础API。当前Java ME存在两种配置CDC和CLDC。
将具有固定连接的、不间断网络连接的共享连接信息设备,如数字电视机顶盒、网络电视(Web TV)、支持Internet的可视电话和汽车娱乐/导航系统等归为一类,称为连接设备配置(Connected Device Configuration,CDC)。
另一类是具有间断网络通信能力的个人移动信息设备,如手机、双向寻呼机、个人数字助理PDA、销售点终端POS等,称为连接受限设备配置(Connected Limited Device Configuration,CLDC)。
在编写Java ME的程序之前,要根据运行程序的硬件情况选择合适的配置。
4.简表
在配置之上的软件层次是简表(Profile),它是某个行业或者某个领域内的特性概括,每套简表专门针对某一类设备。例如,移动电话具有一套简表,PDA也具有一套简表,数字电视机顶盒具有另外一套简表。
简表与它的上一层配置必须组合使用。简表以配置为基础定义了一些附加的类和包,简表是专门针对某个特定行业或某类设备上使用API的最小集合。
每个配置上都定义了若干个简表,如前所述,Java ME中包含两种配置CDC和CLDC,相应地,存在着两套支持不同配置的简表。支持CDC的简表有:FP(Foundation Profile,基础简表)、PP(Personal Profile,个人简表)和PBP(Personal Basic Profile,个人基础简表)。
支持CLDC的简表目前只有MIDP(Mobile Information Device Profile,移动信息设备简表),它是目前移动电话上使用的主要简表。
5.可选包
Java ME通过CLDC、CDC及其对应的简表规范了小型设备大部分的通用功能,为了保持良好的扩展性,J2ME引入了可选包(Optional Package),达到进一步扩展功能的目的。
下面介绍一些常用的、功能强大的可选包。
蓝牙功能:它提供用于开发蓝牙通信程序的接口,当然小型设备中必须具有蓝牙设备才能运行该接口编写的程序。
无线消息功能:它支持无线消息以与平台无关的访问方式访问无线资源,它既支持 CDC 也支持CLDC。
移动多媒体功能:它提供了在小型移动设备上处理音频和视频等多媒体的能力,包括播放音频视频、录制语音等。它允许在具备摄像功能的设备上录制视频,允许在具备麦克风的设备中录制音频。
移动3D图形功能:主要用于CLDC 1·1平台,支持开发3D图形程序,特别是Java 3D游戏。
可选包一般针对新兴的技术,进行一些试验性的探索,如蓝牙、Web服务、无线消息等,一旦技术成熟,这些可选包就很可能会合并到简表甚至配置中。