做j2me应用开发的程序员也许经常会被一些名词或者概念所迷惑,比如personal basic profile和personal profile有什么关系?基于cldc的应用程序能够无修改的移植到基于cdc的设备上嘛?要回答这些问题并不容易,因为你必须首先揭开j2me平台的神秘面纱。
做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包。
总结:上面是我对j2me平台进行的阐述,我想最重要的就是configuration/profile的设计。理解了它就掌握了一半。如果大家有不同的意见,欢迎一起交流!
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器