Java 2 Micro Edition简介(三)

类别:Java 点击:0 评论:0 推荐:

本文作者:王森
台湾交通大学科技管理研究所
[email protected]

█Java 版本的演进

    相信熟悉Java历史的人或多或少都听说过,Java技术一开始并非就叫做Java,而是叫做OAK,而且最早的时候就是为了嵌入式系统而设计的产品。后来因为网际网络的发达,而OAK的诸多特性刚好又适合用在网络上(例如可移植性、编译后程序代码很小),因此被改名成Java,从此因缘际会地成了网络上的闪亮巨星。随着时间越来越成熟,也慢慢地产生了许多非原本预期中的相关运用。虽然Java已经被用到许多企业级软件上,可是其实骨子里面还是非常适合用在嵌入式系统之中。
Java版本的历史演进如下图所示:


    从图中大家可以发现,虽然从Java 1.0发表之后,Java就被广泛地使用在桌上型应用程序以及Applet的开发上,但是,从Java 1.1开始,Java又回到了它一开始的老路--也就是嵌入式系统上面的应用,在当时Sun Microsystems发表了Embedded Java与Personal Java(也有人简称为PJava)这两项规格。

    其中Embedded Java是为了资源十分有限,而且没有显示设备的装置而设计; Personal Java则是为在能够与网际网络联机、并拥有显示系统(例如彩色LCD)的消费性电子装置而设计。

    接着Java的版本演进到Java 2,这时为了再明显区分各种Java的应用,所以分割出了J2EE、J2SE、以及J2ME三种版本。这三种版本的各种特性我们已经在前面详细的描述过,在此不再赘述。不过请大家记住,由于Java 2将Java的应用区分成三大块,使得Java程序语言的发展不会再像Java 1.1时如树枝状般扩散出去,这幺一来有助于大家对Java各种应用的厘清,而不会造成今后越发展下去越不可收拾的混乱局面。

    额外向大家一提的是,后来Personal Java发展到1.2版的时候,也采用了一些Java 2平台上与安全性有关的设计。

█Java 2 Micro Edition概观

    J2ME在设计其规格的时候,遵循着「对于各种不同的装置而造出一个单一的开发系统是没有意义的事」这个基本原则。于是J2ME先将所有的嵌入式装置大体上区分为两种:一种是运算功能有限、电力供应也有限的嵌入式装置(比方说PDA、手机);另外一种是运算能力相对较佳、并请在电力供应上相对比较充足的嵌入式装置(比方说冷气机、电冰箱、电视机上盒(set-top box))。因为这两种区分,所以Java引入了一个叫做Configuration的概念,然后把上述运算功能有限、电力有限的嵌入式装置定义在Connected Limited Device Configuration(CLDC)规格之中;而另外一种装置则规范为Connected Device Configuration(CDC)规格。也就是说,J2ME先把所有的嵌入式装置利用Configuration的概念区隔成两种抽象的型态。

    其实在这里大家可以把Configuration当作是J2ME对于两种类型嵌入式装置的规格,而这些规格之中定义了这些装置至少要符合的运算能力、供电能力、内存大小等规范,同时也定了一组在这些装置上执行的Java程序所能使用的类别函式库、这些规范之中所定义的类别函式库为Java核心类别的子集合以及与该型态装置特性相符的扩充类别。比方就CLDC的规范来说,可以支持的核心类别为java.lang.*、java.io.*、java.util.*,而可以支持的扩充类别为java.microedition.io.*。
区分出两种主要的Configuration之后,J2ME接着在定义出Profile的概念。Profile是架构在Configuration之上的规格。之所以有Profile的概念,是为了要更明确地区分出各种嵌入式装置上Java程序该如何开发,具有哪些功能。因此Profile之中定义了与特定嵌入式装置非常相关的扩充类别,而Java程序在各种嵌入式装置的使用者接口该如何呈现的规定就是定义在Profile里头。Profile之中所定义的扩充类别也是根据底层Configuration内所定义的核心类别所建立。
嵌入式系统上的Java程序、Profile、Configuration、虚拟机器、操作系统、以及实体装置之间的关系如下图所示:

    从上图大家一定可以发现,根据某个Profile规范所撰写的Java程序除了可以直接呼叫Profile中定义的扩充类别,也可以直接叫用Configuration里头所定义的核心类别子集与扩充类别。

    目前J2ME对于Configuration以及Profile所组成的架构大致如下图所示:

    从上图可以看出,目前从CLDC所衍生出来的Profile有两种,一种是Handheld Profile,大多数用在PDA上;而另外一种是Mobile Information Device Profile(MIDP),这个Profile是针对行动装置所定义,比方说呼叫器(Pager)行动电话等等,都是属于行动装置。

    另外,我们可以发现Embedded Java与Personal Java似乎没有包含在两个Configuration任何一个底下,这看起来有点奇怪,不过他们还是归类在J2ME的范畴之中,而且也衍生出了Java的实时版本(Real-time Specification for Java)。其实Embedded Java与Personal Java会慢慢被架构在CDC之上的Profile所取代。拿Personal Java来说,其实它的规格与Personal Profile的规格是兼容的。之所以目前还存有Embedded Java与Personal Java这两个名词的主要原因在于市场上已经有大量采用这两种规格的实作品,所以短期内Personal Java仍然会不断演进,一时之间还无法立刻归类到J2ME的特定Profile之下。

█CLDC、CDC以及他们所衍生出来的Profile之规格

    既然Sun将所有的嵌入式装置区分成CLDC 与CDC两种,接下来我们先就这两种Configuration做讨论。
    Connected Limited Device Configuration(CLDC)就Sun的文件所描述,是定义为「可以放在您的手掌上的装置」,比方说Palm系列的PDA或是手机就是最好的例子。而Connected Device Configuration(CDC)根据Sun文件的描述,定义为「可以插在墙壁上的装置」,比方说电视机上盒(set-top box)就是一个例子。不管如何,这两种Configuration之中定义的皆为这两种型态的嵌入式装置要执行Java程序所需要的最小配备需求。底下是CLDC与CDC各自的最小配备需求:

配备\Configuration

CLDC

CDC

RAM

RAM与ROM再加上闪存(Flash Memory)要为128K~512K。

大于等于256K

ROM

RAM与ROM加上闪存要为128K~512K。

大于等于512K

电源

通常是使用电池,所以电源有限。

不设限

    在Javasoft的官方文件之中所架构出来的J2ME如下图所示:

    根据上图,我们来讨论一下建构在Configuration之上的Profile。在Profile之中也定义了特定种类嵌入式装置的最小配备需求。既然Profile建构在Configuration之上,其意义就是说Profile之中所规范的配备需求不可能比Configuration还要低。同时,Profile之中对于显示功能、网络功能、以及耗电能力等相关需求将会比Configuration之中所规定的还要高。
底下是一些Profile的配备需求:

配备\Profile

Foundation Profile

Personal Profile

MIDP

本文地址:http://com.8s8s.com/it/it18339.htm