作者: 梅其波

自从Sun Microsystems推出Java 2 Platform的概念以后,Java在各个平台都已经取得了巨大的进展。如下图所示Java平台分为三个Edition:Java 2 Standard Edition, Java 2 Micro Edition, Java 2 Enterprise Edition。 Java 2 Standard Edition又简称为J2SE, 它是Java的标准版,它使用Java Hotspot虚拟机来提高其性能,其Java类库包含了Java语言的所有特性,针对的设备主要是台式机等设备。Java 2 Enterprise Edition又简称为J2EE, 其类库存除了Java语言的所有特性外还包含针对企业计算的各种编程接口和规范

J2EE针对的设备主要是后端的Server,它也使用Java Hotspot虚拟机。Java 2 Micro Edition又简称为J2ME, 针对的设备主要是嵌入式和消费类的设备,因为这些设备内存和处理器的限制,其类库比较小一些,相对于J2SE的类库来说作了一些剪裁,其虚拟机也针对相应 的设备作了剪裁。近年来Java在各个方面有了广泛的使用,尤其在Client端和Back End端有了很多商业应用。本文将简单介绍一下国内也正在热起来的J2ME的基本概念和基本内容。

1.  J2ME的市场

J2ME 广泛应用于消费和嵌入式设备中。在汽车,电子元器件,工业自动化,医疗设备,航天和军事,办公自动化,商业零售,电信和数据中心,信息自动化,远程控制等 各个行业都有广泛的应用。现在国内外使用J2ME比较多的应用包括车载信息和计算,数字电视,顶置盒,internet访问设备,家庭 Audio/Video,无线手持设备等等。

上图是一张描述J2ME 在家用电器中使用的状况图。J2ME在家用设备中有着广泛的用途,这在国内外J2ME的使用中也已得到证明。

2.J2ME的架构

下图是J2ME 的结构图,在其中我们可以了解到两个重要的概念,Configuration和Profile。 我们知道J2ME所面对的是大量各种不同的设备,它们在外观和功能上均各不相同。J2ME将这些设备进行分类,将一些共性提取出来形成适合于某个范畴中设 备可用的规范称为Configuration。Configuration包含虚拟机和核心的类库。它们都是一些通用的特性,能在所有的平台上通用。 J2ME将某一个行业或领域内设备的特性提取出来,形成Profile。Profile指的是某个行业或某个领域内特定的特性总结,它们不是通用的东西, 是针对某一类设备所制订的规范和API,它只在某些设备上可用。

3. CDC和CLDC

如下图所示,J2ME 分为两个Configuration。一个是CDC(Connected Device Configuration),一个是CLDC(Connected Limited Device Configuration)。它们针对的设备的CPU和内存是不一样的,所以它们所使用的虚拟机和核心类库也不相同。CDC主要针对32bit及 75MHz以上的处理器,CLDC主要针对16,32bit及16MHz以上的处理器。CDC用的虚拟机是CVM,而CLDC用的是KVM。与其处理器和 内存能力相适应,CVM包含更多的虚拟机处理能力。CDC的核心类库也比CLDC的要大。

CDC针对的设备主要是数字电视,顶置盒,网络电话,车载计算设备,Server后端的一些应用。这些设备的特点是有线连接,稳定而持续的电源供应,设备资源比较受限。

CLDC针对的设备主要是无线的手持设备,PDA或POS机。这些设备的特点是无线连接(带宽受限, 连接时断时续),没有稳定的电源供应(通常使用电池)和资源极少。CLDC现在在国内外用得比较广泛的是手机上的使用,在日本和韩国已经有了许多成功的实例。

CLDC的设计目标是定义一个标准的,占用内存极少的平台来满足资源很少的那些设备的要求。它可以确保动态,安全地将交互式Java应用部署到一些小的设备上去。确保第三方的应用开发人员可以为别的设备开发应用程序。CLDC 1.0版由18个公司通过JCP组织来制定。它定义了所使用的Java虚拟机和核心类库来在一些小的具有Java能力的设备间共享。

下图直观的表示的出了J2ME Configuration的关系。我们可以看到KVM是CVM的一个子集,CLDC的核心类库也大部分包含在CDC的核心类库中,但CLDC也定义了一些自已的类库。再加上外围的Profile和OEM extension API, 组成了一个完整的J2ME环境。

4.结论

从上可以看出Java 2 Micro Edition是一个完整的开发和运行平台,它在Java 2 Platform中主要是针对client端的家用和消费设备,随着Internet的不断发展,各种接入设备的不断涌现,J2ME的使用也必将越来越广泛