移动设备的应用开发平台――J2ME(原)

今天,我再来介绍一下j2me技术。如果说99年java 2刚刚发表时,java的嵌入式开发
标准还不那么引人注目的话,现在的j2me已经开始吸引世界的目光了。在NTT DoCoMo公司
的推广下,Java手机在日本已经率先火了起来。诺基亚、西门子、摩托罗拉等公司也开始
在自己的手机上使用j2me平台,也许在不久的将来,日本的成功经验会平行的移植到中国
,这是可以预见的。

自从java问世以来,Sun公司已经成功的将java平台技术推广到台式计算机与服务器。
随着移动电话及PDA的日益普及,Sun更致力于将java技术向移动设备这个方向发展.
Sun 在1999年6月时推出了 Java 2袖珍版 (J2ME)来满足消费电子和嵌入设备的需要。
J2ME是为了那些使用有限的能源、有限的网络连接 (常常是无线连接)以及有限图形用户界
面能力的设备开发的。它最初的目标是 16位或 32位处理器,16 MHz时钟频率, 512K或更
少内存的设备。
容易看出,应用J2ME的硬件平台相对于其它平台是有着较大的差异。其实,支持J2ME
的硬件平台之间也有很大差异,其中有比较高端的设备,例如:电视机顶盒、网络电视等
;也有比较低端的设备,例如:移动电话、寻呼机、PDA等。它们的不同具体体现在,前者
是运算能力相对较佳、并且在电力供应上相对比较充足的嵌入式装置,而后者是运算功能
有限、电力供应也有限的嵌入式装置。正是为了要满足以上两大类硬件的开发要求,J2ME
针对硬件的数据处理能力、存储容量、网络连接能力等规定了Configuration的概念,把上
述运算功能有限、电力有限的嵌入式装置定义在Connected Limited Device Configurati
on(CLDC)规格之中;而另外一种装置则规范为Connected Device Configuration(CDC)规格
。CLDC所使用的java虚拟机称为KVM,而CDC所使用的则称为CVM。
上一段所说的CDC、CLDC仅仅是对各类设备中最具共性的配置提供了基本的功能集合。
但实际应用中,不同的设备之前仍存在着很大的差异。例如,虽然同属于CLDC规格的硬件
设备,Palm的屏幕显然比移动电话的屏幕大。于是,J2ME在Configuration的基础上又定义
了Profile的概念。Profile是针对某一类设备所制订的规范和API。例如,对移动电话的应
用,J2ME定义了一个专门的Profile-MIDP(Mobile Information Device Profile);而
对于PDA的应用开发,J2ME则也对应的定义了一个PDAP(PDA Profile)。有了Profile以后
,才真正有了可以建立一个可运行J2ME应用程序的完整环境。
由上面的讨论可知,在Virtual Machine之上只有一个Configuration,而在Configur
ation之上可以同时存在数个Profile,如此才能有效的针对各种不同的设备构造一个完善
的运行环境。如下图:

前面的内容针对J2ME平台的架构规范给了大家一个感性上的认识,也许您还是会有疑
问:Configuration、Profile中定义的规范到底是些什么东西?下面,笔者就将精略的列
出目前应用最为广泛的MIDP规范中的一些具体内容,虽然它只是J2ME规范中的一个小部分
,但也能让您对“规范”二字产生一些理性上的认识!
MIDP规范所规定的特定功能部分包括API和硬件两部分。
1. API部分
l 用户界面支持:提供的类程序包是javax.microedition.lcdui。
l 网络支持:提供的类程序包是javax.microedition.io。
l 数据持续存储支持:提供的类程序包是javax.microedition.rmsi。
l 其他例外处理及Timer等类的支持。
2. 硬件部分
l 内存:128KB的稳定内存供MIDP组件使用;8KB的稳定内存供数据持续存储使用;32KB的
稳定内存供虚拟机运行时用。
l 显示器:屏幕大小为95×54象素,1位色深,屏幕高宽比大约是1:1。
l 输入设备:键盘、触摸式屏幕或二者并存。
l 网络:提供在有限带宽的情况下,进行双向、无线,但可能是间歇性连通的通信功能。

现在,您是否感觉一切豁然开朗?神秘的面纱已经被揭开,J2ME的庐山真面目已经呈
现在了您的眼前……
展望未来,无线化、微型化、网络化的信息交换设备将是IT业发展的主流趋势,这个
市场将远远超过家用PC的市场。有关资料表明,到2005年,全球的移动电话将超过14亿部
。可以预计,不久以后,汇款、预定机票、购物等电子商务服务也将通过移动商务来得以
实现。伴随着移动通信设备深入千家万户,移动信息装置将成为个人的信息平台,正因为
如此,移动商务将前景无限,J2ME技术也将迎来灿烂的明天。

初学,列几条看法,供大家扔鸡蛋:
1.j2me的开发有局限性。j2me是java在微型电子设备上应用开发平台,“应用”决定了它不参与电子设备底层开发的竞争。除非电子设备通

过相应ni提供支持,否则单靠j2me甚至连手机的电话号码也没法获取。
2.j2me的应用设备有限。j2me的应用需要运行在vm之上。理论上来讲,如果一个电子设备有支持ANSI C的编译器,利用sun的VM RI很容易实现VM的移植。但是实际上支持j2me需要设备提供额外的空间,而且java的运行效率仍然不高,所以j2me不太可能应用一些设备上,特别实时要求较高的设备。
3.configuration只是一个硬件集合的抽象。具体的configuration会限定硬件的基本规格。
4.CLDC是针对“可以拿在手上的”的设备,它们一般靠电池供应能源。CDC是针对“可以插在墙上的”的设备。它们一般靠稳定电源供应能源。

这是也许是它们最本质的区分。
5.configuration可以决定VM的实现。profile的移植依赖于相应本地方法调用机制,如cldc中有kni。
6.profile针对于一类具体的设备。如midp针对移动信息设备,具体的硬件规格midp spec有说明,并没限定在手机(我的印象当中pda也属于

mid profile里)
7.我们现在谈到的j2me开发大部分集中在 cldc+midp,甚至更为集中在手机应用开发。
8.在midp开发中,除了有核心包外,还有些可选包如关于media,wireless message, bluetooth的,由相应的jsr维护,也都有相当高的应用价植。
9.个人觉得,j2me是有前景的,但不至于象媒体炫耀得那么灿烂。印象当中motorola 2000年推出j2me的开发社区,可是几年过去了,并没有象
当初想象那样掀什么惊滔巨浪,几年过去了,社区依然象刚开始那样冷清。不排除motorola在这方面存在运作不力,但也不能排除j2me在实际发展过中也遇到了阻力。要知道,j2me在任何子领域都是有比较成熟的竞争者。
10.新的技术往往都是务实的,能够为社会创造价值,但是也容易被资本运作者用作炒作工具,结果资本运作者抽走了资,股民和政府被骗走资金,而新技术因为炒作过热也未能得到良好的发展。当初.com热浪时,有多少公司是在实实际际加深技术,推广利于国计民生的应用?有的老总明确地告诉我,就是利用点子、利用新概念、包装技术含量低的产品骗投资者,投资者再去骗股民。我觉得研究j2me,无论公司和个人多抱些务实的态度,少些鼓吹,几年后也许可以在这个领域有不错的发展。

呵呵,同意skyleaf24的观点!