j2me,即java 2 micro edition,是sun公司推出的在移动设备上运行的微型版java平台,常见的移动设备有手机,pda,电子词典,以及各式各样的信息终端如机顶盒等等。
由于移动终端的类型成千上万,而且计算能力差异非常大,不可能像桌面系统那样仅仅两三个版本的jvm即可满足windows,linux和unix系统,因此,j2me不是一个简单的微型版的jvm。为了满足千差万别的移动设备的需求,sun定义了一系列的针对不同类型设备的规范,因此,j2me平台便是由许多的规范组成的集合。
最重要的移动终端当然是手机了,因此,我们主要讨论手机相关的j2me规范。
configuration
sun把不同的设备按照计算能力分为cldc(connected limited device configuration)和cdc(connected device configuration)两大类,这两个configuration是针对设备软硬件环境严格定义的,比如cldc1.0定义了内存大小为64-512k,任何设备如果支持cldc1.0,就必须严格满足定义,不能有可选的或者含糊的功能。
cldc1.0是针对计算能力非常有限的设备定义的,只支持整数运算,不支持浮点运算,早期的java手机大部分都支持cldc1.0,如nokia 3650,siemens 6688i。
cldc1.1则增加了浮点运算,因此,在支持cldc1.1的设备上,可以使用float和double类型的变量。现在的java手机很多都能支持cldc1.1,如nokia 9500,siemens s65。
cdc则是针对计算能力比较强的设备定义的,如ppc等,cdc平台的jvm基本上和桌面的jvm很接近了,只是可以使用的package大大少于j2se的包。支持cdc的非常高端的java手机也会很快上市。
profile
和configuration相比,profile更多是针对软件接口的定义,profile有必须实现的,也有可选的功能,因此,profile更灵活。
最重要的profile当然是midp(micro information device profile),midp定义了能在java手机上运行的java程序的规范,包括应用程序生命周期,各种ui界面组件,支持record存储和http连接等等,符合midp规范的java小程序被称为midlet,可以直接通过无线网络下载到手机并运行。
早期的midp1.0规范使我们能在手机上运行有ui界面的java程序,但是midp1.0对游戏的支持不够,必须自己实现许多代码,因此,midp2.0规范大大加强了对游戏开发的支持,使开发者能编写更少的代码来创建游戏。
midp规范的图形界面基本上都是独立于j2se的awt和swing组件,因为目前手机的计算能力还比较有限,但是,随着手机的cpu越来越快,使得awt和swing移植到手机上也将成为可能,因此,基于cdc规范的最新的pbp 1.0(personal basic profile)和pp 1.0(personal profile)提供了部分awt和swing的支持,目前,部分高端pda已经可以运行pbp和pp的java程序了。可以预见,将来大部分的awt和swing组件都能移植到手机上。
前面已经说过,和configuration相比,profile有许多可选包,比较实用的profile还有在jsr135定义的mmapi(mobile media api),实现多媒体播放功能;在jsr184定义的m3g api(mobile 3d graphics api),实现3d功能;在jsr120定义的wma(wireless messaging api),实现短消息收发。如果你的手机支持某一profile,如m3g,那么便可以在midlet中使用m3g的3d api实现3d游戏。
如果你准备在手机上开发j2me应用,选择手机时就需要注意厂商支持的cldc规范,支持midp1.0还是2.0,是否支持mmapi,m3g,wma等可选包。
profile虽然定义了java api接口,但是底层如何实现是由各厂商自己决定的,如m3g定义了3d接口,但是底层实现既可以使用硬件加速,也可以由c程序模拟,或者部分由硬件实现,部分由软件实现。
比j2me更精简的java平台被sun称为javacard,运行在信用卡等芯片中,实现电子支付等功能,目前sun还没有把javacard并入j2me平台。
闽公网安备 35060202000074号