1.2 J2ME技术体系
由于J2ME技术面向的设备是所有的嵌入式设备,而这些嵌入式设备的种类至少有几百种之多,所以在实现该技术时,通过设计其体系结构实现通用。
在设计J2ME技术时,首先依据嵌入式设备的硬件特性将设备划分为两大类:
u CDC设备
CDC(Connected Devices Configuration,连接设备配置),属于嵌入式设备中硬件性能较高的设备。可以把这类设备理解成那些可以通过插座之间连接电源的设备。例如智能家电、车载设备等。
该类设备的硬件特性如下:
u 有稳定的电源供应
u 设备运算能力强
u 有丰富的外部设备
u CLDC设备
CLDC(Connected Limited Devices Configuration,连接有限设备配置),属于嵌入式设备中硬件性能较低的设备。可以把该类设备理解成那些使用电池进行供电的设备,由于使用电池所有各种性能相对较低,例如手机等。
该类设备的硬件特征如下:
u 电源有限,一般使用电池
u 设备运算能力有限
u 外部设备较少
在J2ME技术中,将嵌入式设备划分为这两类的目的是提高程序的通用性,降低程序设计人员的负担,也使J2ME技术可以很方便的适应新出现的各类嵌入式设备。
基于这种对于嵌入式设备的划分方式,J2ME在设计其技术体系时采用了模块化的设计方式,即首先针对CDC和CLDC设备设计最通用的API,然后在针对特定的设备设计针对性的API,这样不仅大大提高了技术的通用性,也降低了程序设计人员的学习负担。下面进行详细的介绍。
众所周至,Java程序都是运行在Java虚拟机(JVM)的基础之上,为了进行嵌入式设备编程,SUN专门设计了嵌入式设备上的虚拟机,由于J2ME技术将嵌入式设备分为两大类,所以针对每类设备都设计了一个虚拟机,分别如下:
u 运行在CDC设备上的JVM被称作CVM
u 运行在CLDC设备上的JVM被称作KVM
针对CDC和CLDC设备上的程序设计,SUN公司专门设计了两套API,其中CDC设备必须支持CDC API,而CLDC设备必须支持CLDC API。如果一个设备支持Java,则必须支持这两套API中的一种。
由于现在CLDC设备,特别是手机上的J2ME程序开发比较流行,下面以CLDC分类为例子,来介绍J2ME技术的体系结构。
由于CLDC API实现的是所有CLDC设备都支持的功能,所以包含的功能相对较少,该套API主要包含了三个包:
u java.lang
u java.io
u java.util
这三个包是对于J2SE中API的简化,相对与J2SE API减少了很多的类和功能,也是J2ME API中和J2SE最类似的部分。在学习J2ME中,绝对不要把J2ME理解成J2SE的简化,其实J2ME中的很多API是J2SE API中没有实现的。
CLDC API的实现现在包含两个版本:CLDC1.0和CLDC1.1,其中CLDC1.1是在CLDC1.0基础上的增强。关于CLDC更详细的内容,可以参阅CLDC规范。
其中CLDC1.0规范的下载地址为:
http://jcp.org/aboutJava/communityprocess/final/jsr030/index.html
CLDC1.1规范的下载地址为:
http://jcp.org/aboutJava/communityprocess/final/jsr139/index.html
SUN公司的CLDC API实现的源代码可以在以下地址下载:
http://www.sun.com/software/communitysource/j2me/cldc/download.xml
这些资料对于J2ME初学者存在一定难度,初学时可以不用十分深入。
关于CDC和CLDC,就介绍这么多,希望大家能通过上面的介绍,了解CDC和CLDC的概念及其用途。
在实际的开发中,只有CDC API和CLDC API还是无法进行实际开发的,因为这些API提供的只是所有这类设备都具有的通用功能,而不同的嵌入式设备种类,还有很多自身特有的功能,所以J2ME技术体系引入了另外一个概念——Profile(简表)。
Profile这个概念是建立在CDC或CLDC API的基础之上,实现的是一类特定嵌入式设备必须支持的功能,通过该概念,实现了J2ME技术的模块化设计。
例如针对手机这样一类特殊的嵌入式设备,实现了一个称为MIDP(Mobile Information Devices Profile)的简表来规范该类设备的硬件特性以及必须支持的功能。
MIDP对于手机的以下硬件性能都提出了最低要求,具体如下:
u 屏幕大小
u 屏幕颜色
u 手机键盘
u 运行时内存
MIDP也对该类设备必须支持的功能提出了具体的要求,这就是MIDP API,绝大部分手机都支持MIDP API。MIDP API是指SUN要求所有MIDP设备必须支持的最小功能集合。现在分为MIDP1.0和MIDP2.0版本。其中MIDP2.0版本兼容MIDP1.0。
其中MIDP1.0 API主要包含以下四个包:
u javax.microedition.midlet——MIDlet类所在包
u javax.microedition.lcdui——界面类包
u javax.microedition.rms——持久存储类包
u javax.microedition.io——网络编程类包
MIDP 2.0除了支持以上API以外,还包括如下两个包:
u javax.microedition.lcdui.game——Game API包
u javax.microedition.media——声音编程包
u javax.microedition.media.control——声音控制包
u javax.microedition.pki——认证和签名包
不同的手机支持的MIDP API的版本不同,这就需要区别对待这些手机,使用不同的API进行实际的开发。MIDP API是J2ME手机编程中最核心的功能API,也是J2ME手机编程技术学习的重点。
关于MIDP规范的更多资料,可以参阅如下地址:
其中MIDP1.0规范的下载地址:
http://jcp.org/aboutJava/communityprocess/final/jsr037/index.html
MIDP2.0规范的下载地址:
http://jcp.org/aboutJava/communityprocess/final/jsr118/index.html
这两套API的源代码下载地址如下:
http://www.sun.com/software/communitysource/j2me/midp/download.xml
在手机中,一般都支持CLDC API和MIDP API的相应版本,所以在编程中可以直接调用这些API提供的功能进行实际的开发,因为这些API的实现已经内置在手机中。学习J2ME技术,最核心的就是学习这些API的实际使用,然后调用这些API实现相应的功能。
除了这些基础的API以外,有些手机还会支持一些特定的API,这些API被称为可选包,也就是可选API,手机可以进行有选择的支持。常见的可选包有:
u WMA API——收发短信息API
u MMAPI —— 多媒体编程API
u M3G API——3D图形API
这就是J2ME手机游戏编程的体系结构,总的来说,后期学习J2ME手机开发,主要学习3类API:
u CLDC API
u MIDP API
u 可选API