在消费电子和嵌入式设备的广阔领域中,目前最受关注的是移动通信设备,因此有必要介绍一下移动通信设备的主要操作系统平台,这对J2ME的开发是相当重要的。移动通信设备主要包括PDA和智能手机,现在和将来都还会有一部分设备处于PDA和智能手机交界的位置。
其中手机的市场远比PDA要大得多,所以许多国外谈到J2ME的文章都是以Wireless应用为主。
PDA也即掌上电脑,一般是指类似于Palm公司出品的Palm这样的设备,主要的操作系统有Palm OS和Pocket C两大阵营。Palm OS来自Palm公司,是一个开放的系统,在PDA市场上占主导地位,已经有非常多的第三方厂商开发的应用和一大批非常忠实和狂热的用户。目前采用Palm OS的主要有Palm公司的Palm系列和Sony公司的Clie系列(Handspring公司的Visor也属于这类产品,但是已经公布退出传统PDA市场,主要发展PDA和无线通讯结合的产品Treo)。
Pocket PC是微软及其合作伙伴Casio、Compaq、Hewlett Packard和Symbol推出的,基于Win CE 3.0,也是一个开放的标准系统,功能可以扩展(以往的Win CE是一个封闭的不可扩展的系统),在这个平台上厂商可以自己开发软件。具体产品如Compaq的iPAQ。
另外,Sharp公司Zaurus系列PDA采用Linux的一个针对嵌入式系统的版本。作为拥有高达64M内存的高端PDA,可以满足CDC的标准,预装了Personal Java的虚拟机。
在智能手机领域,主要的平台是Symbian的EPOC。EPOC最早由Psion开发,主要面向智能手机,也有PDA的特征,Psion就是第一批主要的PDA厂商之一。Psion公布EPOC的第一个版本是开放的OS,并向其它厂商授权,随后Psion与EriCsson,Nokia,及稍后的Motorola建立了名为"Symbian"的联盟,目前主要股东为Motorola, Nokia, Panasonic, Psion和SonyEricsson,而且Siemens4月也公布加入。Symbian在欧洲有很好的基础,为大多数主要手机厂商所采用,典型的产品如Norkia的9210。
在这些操作系统平台中,Palm OS上已经有了MIDP的参考实现,但是并不是最适合PDA的Profile。Symbian实现了CLDC和MIDP,作为智能手机的操作系统,是理想的MIDP应用平台。在Compaq的iPaq上已经实现了CDC(基于Pocket PC),另外前面提到过,IBM的WebSphere Micro Environment在Pocket PC上实现了CLDC,CDC和MIDP。Sharp的Zaurus实现了Personal Java(基于Linux)。由于这些主要操作系统平台都是开放的,基本可以相信,主要的移动通信设备操作系统都将一直提供J2ME的支持,但是具体支持哪个标准则并不一定死板地按照CLDC和CDC的最初定义,和设备的硬件条件和厂商的选择有关,或者可能同时实现多个标准。
关于移动信息设备上J2ME应用的具体开发,现有的技术基本分为以下几类:
采用早期的KVM和com.sun.kjava包,或者加上第三方的kawt类库。有很多早期的文章和代码,但是这一技术将被PDA Profile取代,而且不保证兼容性,不建议开发者采用这一方法,而是等待PDA Profile的最后完成及其实现。
采用CLDC和MIDP开发。由于MIDP标准发布较早,智能手机的市场也远比PDA大得多,这是目前大量的无线应用文章的主要内容,不过它最适合的目标是智能手机,虽然智能手机可能有一定的PDA的功能,但是这一技术并不是最适合PDA的。
采用CDC和Personal Profile,这样的技术不太多见,目前的移动信息设备硬件能力还有所不足。但是下一代的PDA和智能手机肯定可以支持。
就现有的PDA硬件条件而言,J2ME应用要和已有的应用竞争还有比较多的困难:
空间:现在一般的Palm类设备内存从2M到16M不等(目前较高档的机型都已支持扩展卡,可以扩展到128M,但是卡上运行程序的速度要慢得多,一般主要用来放数据,运行程序不能依靠于卡),Palm上一般现有程序的标准大小是几十K到300K以下。而仅MIDP的Palm参考实现库在Palm上就需要将近600K,再加上作为基础的CLDC库,加上程序,就快要接近1M了。和已有的应用相比,目前是没有太大竞争力的。
速度:由于Palm一直信仰的是"简单就是美"的原则,目前的Palm系列PDA主要用的是33MHz 的Motorola 68000系列DragonBall,这虽然带来了成本的降低和节电性,但J2ME应用的性能很难让人满足了。
功能:目前最适合Palm的PDA Profile尚未完成,假如用MIDP开发则不太合适,用早期的KVM和com.sun.kjava则因为不是J2ME标准,程序兼容性无法保证。
虽然如此,但是在移动信息设备上开发J2ME应用的前景还是非常美好的:
硬件的发展:目前的Palm配8M到16M内存已经是主流,下一代超过32M是必然的趋势。Palm OS 5终于开始支持32位的ARM RISC处理器,其速度应该能够提高10倍以上。事实上,Sharp公司今年第一季度发售的Zaurus SL-5500已经采用了Intel 206MHz StrongARM处理器和64M内存,在这样的硬件上速度和内存都不会成为问题。
标准的完善:PDA Profile今年内将最后完成,可以预计很快会在主要操作系统上得到实现。目前在JCP也有许多其他标准非常有意义,例如关于蓝牙技术(Bluetooth),游戏,定位等。
平台的广泛性:移动信息设备的主要操作系统平台都是开放的,J2ME的标准也是开放的,因此基本上所有的主要操作系统平台都支持或将支持J2ME,这带来的广阔市场(智能手机的市场尤其巨大,据称Norkia到今年就可以出货5000万只Java手机,而到2003年可达1亿只。)和真正的"一次编写,到处运行"是任何其他技术无法比拟的。对于开发者而言,可以不受操作系统的限制,不用担心在这个多变的市场上因平台的变化而影响自己的应用。
开发的方便性:J2ME虽然和J2SE有着许多不同,但仍然属于Java技术,具有Java方便开发的优点,也使得Java程序员学习移动信息设备开发没有太大困难。