做j2me应用开发的程序员也许经常会被一些名词或者概念所迷惑,比如personal basic profile和personal profile有什么关系?基于cldc的应用程序能够无修改的移植到基于cdc的设备上嘛?要回答这些问题并不容易,因为你必须首先揭开j2me平台的神秘面纱。
2000年当j2me平台的cldc发布的时候,所有的java开发者都为之兴奋不已。sun也不负众望在两个月后发布了基于cldc的midp,给开发者提供了开发交互式应用程序的平台。我想现在国内还主要是基于cldc/midp在开发应用吧。j2me平台的另一个规范cdc在大概10个月后才发布,同时发布的还有foundation profile。但是由于他们都没有给开发者提供开发可交互应用程序的api,因此他们发布的影响远远小于cldc/midp的发布。大概在2003年sun发布了基于cdc的personal basic profile和personal profile。他们的组合替代了以前的personaljava平台。
是不是已经被这些名字弄糊涂了,我们现在来看j2me平台的结构。j2me平台是本着configuration和profile结合来设计的。configuration是提供支持最大范围设备的最小的平台。profile是针对特定的设备提供相应的开发包集合。在j2me的两个基本配置cdc和cldc是按照如下的标准进行区分的。
cldc:
512 kb 以下内存
有限能源供应(通常使用电池)
有限或非持续网络连接
简单的用户界面
16位或者32位的处理器
cdc:
2m以上内存
具有网络连接能力,通常为无线网络
需要实现java虚拟机规范的全部功能
32位或者64位的处理器
从上述的要求中我们不难看出cldc主要针对那些资源非常受限的设备比如手机、pda、双工寻呼机等。而cdc主要面对那些家电产品,比如机顶盒、汽车导航系统等。
下面我们来看看j2me平台的结构图:

我们可以看出j2me的核心是configuration,在它里面定义了java的虚拟机,通过它来和底层的host os打交道。profile提供了访问设备的io或者图形界面的能力,这样configuration和profile共同构成了j2me的运行环境。比如clcd/midp可以提供给你开发手机程序的环境。在profile之上针对不同的设备还可以提供不同的可选开发包。
由于cldc/midp大家都比较熟悉了,我们下面主要介绍一下基于cdc的j2me系统构架,同样还是看它的系统图:

基于cdc的设备可以支持全部的java2语言规范和java虚拟机规范,它是cldc的超集并且远大于cldc,因此基于cldc的程序是可以无修改的移植到基于cdc的设备的。foundation profile是对cdc进行扩展的profile,但是他并没有提供gui的开发包,gui是在personal basic profile中进行定义的,它提供了awt的一个子集给开发人员。它还提供了xlet应用程序模式――针对java tv。personal profile是personal basci profile的超集。他提供了对applet的支持,丰富了awt的组件,添加了java.awt.datatransfer包。
闽公网安备 35060202000074号