新闻正文

J2ME的现状与发展

来源:JAVA天堂  JAVA学习者  2007-8-22 01:33:52 网友评论 0 条 字体:[ ] ~我要投稿!
幽幽黄桷兰 (Thu Jun 10 06:59:48 2004)
转信站: SJTU!netnews.sdu.edu.cn!news.uestc.edu.cn!CQUPT
SUN中国工程研究院 软件技术中心 王刚
摘要
本文简要介绍了J2ME的有关概念和现状、MIDP2.0的最新特点,并对J2ME的竞争对手、J
2ME应用程序的兼容性以及其在Web Services中的应用做了阐述和分析。
什么是J2ME?
当JAVA平台发展到JAVA 2的版本以后,为了适应不同级别计算机硬件的开发需要,JAVA
平台形成了三个主要分支:
Java 2, Standard Edition(J2SE):是为台式机而设计的,主要运行在Linux, Solar
is, 或Microsoft Windows等操作系统上。
Java 2, Enterprise Edition (J2EE):则是一个适合分布式的、多用户、企业级应用系
统运转的平台。它以J2SE为基础,增加了处理服务器端计算的功能。
Java 2, Micro Edition (J2ME):和J2SE不同,它既不算是一个软件也不能算是一则规
范。准确地说,J2ME是为了支持象PDA、手机等小型的嵌入式或移动设备而推出的一系列
的技术和规范的总称。它借用了J2SE类库的一部分,使用了更少的API,而且其J2ME采用
的JAVA虚拟机(JVM)比J2SE的JVM也要小得多。
图1
应该注意到,J2ME要支持的硬件平台也有很大差异,其中有比较高端的设备,例如电视
机的机顶盒、网络电视等;也有比较低端的,象手机、寻呼机等。因此为了满足不同硬
件的开发要求,J2ME规定了configuration的概念,Configuration对不同级别的硬件在
所使用的JVM和基础API集合方面做了规定。于是,对于高端的设备,采用CDC(Connect
ed Device Configuration),所使用的JVM称为CVM;对于低端设备,则采用CLDC(Con
nected Limited Device Configuration),所用的JVM为KVM(参见图1)。
CDC和CLDC仅仅是对各类设备中最具共性的配置提供了基本的功能集合。但是,实际应用
中,不同的设备之前存在着很大的差异。因此,我们在Configuration的基础上,又提出
了Profile的概念。Profile规定的内容,是针对某一类设备所制订的规范和API,有了P
rofile以后,才真正有了可以建立一个可运行J2ME应用程序的完整环境。移动信息设备
Profile(Mobile Information Device Profile或MIDP)以CLDC为基础,它是第一个制
订完成Profile,也是第一个可供使用的J2ME应用程序运行环境。本文中的内容也将主要
围绕MIDP来展开。
目前,支持MIDP,可以运行J2ME程序的设备已经有很多,手机包括Motorola 的A388、T
720,Nokia 6800、7210等等(详细列表请参见http://wireless.java.sun.com/device
/)。截止到2003年2月,已经有21个生产厂家推出了100多种支持JAVA的手持设备。根据
ARC Group2002年六月的《无线JAVA报告》,“到 2007年, 几乎所有的手持设备都将提
供对JAVA的支持”,看来J2ME在未来的几年里仍然将持续升温。
J2ME能为开发者和用户提供什么功能?
如前所述,MIDP出现最早,也发展最快,在此我们也仅讨论J2ME MIDP应用程序的开发。
2002年10月,JCP(Java Community Process,参见http://www.jcp.org)推出了MIDP2
.0的规范,和MIDP1.0相比,它大大加强了对用户界面、多媒体和游戏功能、网络连接功
能的支持,同时将OTA应用程序下载包括到规范中来,另外还为无线信息设备提供了端到
端(end-to-end)的安全机制。
为了支持对声音的处理(例如播放WAV文件),MIDP2.0中增加了一个可选包ABB(Audio
Building Block)。在以前,ABB只包含在Mobile Media API(MMAPI)中,现在将其纳
入到MIDP中来,开发者就可以不用依赖于MMAPI了。当然,如果使用了MMAPI,可以为移
动设备开发更多的功能,比如可以在PDA上播放视频流等等。
对J2ME游戏开发的支持可能是开发者和用户都企盼已久的,MIDP2.0提供的游戏API使得
游戏本身可以更充分的利用设备自身的图形处理功能。它的出现无疑大大简化了J2ME游
戏的开发工作,同时也使得开发者可以更多地控制程序的图形处理性能。
在通信方面,MIDP1.0仅支持HTTP,MIDP2.0则增加了对HTTPS、报文、socket通信以及串
口通信的支持。另外,MIDP2.0还支持服务器Push体系架构,这样,你的手机能够收到来
自服务器的报警、消息或者广播,根据要求启动手机上的应用程序进行操作。
支持Over-the-air (OTA) Provisioning是MIDP2.0的一个重要的新特点,它使得用户能
够动态地部署和更新移动设备上的应用程序。新版的MIDP规范中规定了如何在移动设备
上发现、安装、更新和删除MIDlet套件;同时,提供应用程序下载的服务提供商还能够
判断该MIDlet套件是否能够运行在申请下载的设备上,并且从设备上获取安装、更新和
删除的信息。MIDP OTA provisioning模型为移动服务提供商提供了单一、标准的部署M
IDP应用程序的途径。该模型已经被众多技术领先的移动设备制造商和服务提供商所采纳

自从人类步入网络时代以后,网络安全始终是很一个关键的问题。MIDP2.0增加了强大的
“端到端”的安全模型。一方面,MIDP2.0支持HTTPS,可以对传输的数据进行加密;另
一方面,MIDP2.0采用了和MIDP1.0不同的安全机制,采用安全域来确保未经授权的MIDl
et套件无法访问受权限控制的数据、应用程序以及其他网络和设备资源。
随着新的规范的推出,Sun、Motorola、Nokia、Borland等都推出了各自的J2ME的开发工
具和集成开发环境(IDE),并受到了开发者的广泛好评。据统计,到2003年1月下载J2
ME无线应用开发工具(即J2ME Wireless Toolkit,参见http://java.sun.com/product
s/j2mewtoolkit/)的人次已经超过了515000。与之而来的是J2ME开发队伍的不断壮大,
目前全球J2ME开发人员的总数已经超过了二百万。图2是一个典型的支持J2ME应用程序开
发的IDE,开发者可以完成编码、调试、部署并借助移动设备的模拟器完成功能测试。
图2
J2ME有竞争对手吗?
当然有。就象J2EE有来自.NET的竞争一样,J2ME有BREW(无线二进制运行环境)。
很可能BREW真正开始聚集中国人眼球的时候是在2002年12月4日, 中国联通和CDMA数字
无线技术的先驱及全球领导厂商Qualcomm宣布,双方已签署成立合资公司的合同,以促
进BREW平台在中国的发展,并扶植壮大中国BREW开发商群体。除了中国联通,美国Veri
zon、ALLTEL,韩国的KTF以及日本的KDDI已经推出了BREW的商业服务,而且全球越来越
多的运营商正不断加入他们的行列。
BREW平台是一个瘦应用运行环境,为无线设备提供了一个开放、标准的平台。BREW平台
是全面的、端到端的无线应用开发、设备配置、应用分发、计费和支付解决方案的一部
分。关于BREW更详细的信息,你可以访问http://www.qualcomm.com/brew/。
那么,BREW是否对J2ME带来威胁呢?统计表明,如今全世界可以支持J2ME的手持设备如
今已经达到了七千五百万,有34个运营商在使用J2ME技术;相比之下,BREW可是小巫见
大巫,目前可以运行BREW的设备只有四百六十万,6个CDMA的运营商在提供服务。而且,
在2003年3月,Qualcomm宣布将在其CDMA的芯片中提供对J2ME的支持,其实现主要基于M
IDP 2.0和CLDC1.0.4。这个举措无疑印证了J2ME是技术领先的开发和部署无线数据服务
的解决方案。由于Qualcomm几乎占领了90%的CDMA芯片市场份额,所以这也将加速J2ME向
CDMA领域的渗透。当然,Qualcomm并未准备放弃BREW,因此在将来很有可能出现J2ME和
BREW共存在同一个移动设备上,各自发挥自己的特长,而受益最大的,是移动设备应用
程序的开发者和最终用户。
J2ME有没有不足之处?
有。如果你是一个J2ME的开发人员,或许曾经遇到过这样的情况:一个已经开发好的可
以在Motorola A388上跑的程序在另一个品牌的手机上却不能正常运行,必须经过部分代
码的修改才能使用。这种情况的出现,显然违背了Java平台的“编写一次,到处运行”
的初衷。到底是什么原因呢?这是因为JCP在制订CLDC和MIDP等规范的时候,为了使其能
够适用于众多制造商的产品,做了比较宽泛的规定。因此,当制造商在完成自己的实现
的时候,常常会在规范允许的范围内,渗入某些自己开发的功能扩展,那么,当开发者
调用这些功能的时候,往往必须针对这些扩展加入部分源代码,从而导致了开发出来的
J2ME应用程序的不兼容性。
在这种情况下,越来越多的移动设备制造商和开发者意识到,需要建立一个标准来保证
J2ME应用程序的跨平台性。《无线领域的JAVA技术规范》(Java Technology for the
Wireless Industry即JTWI,JSR185)正是为了完成这个使命而出现的。来自Motorola,
、Nokia、Sony和Sun等公司的技术专家于2002年底开始了该规范的制订,并将于2003年
中期正式推出。JTWI并没有定义新的API,而是为已有的J2ME规范(例如CLDC、MIDP、M

MAPI等)创建了新的手持设备的Profile,使它们能有效地集成在一起,为在手机以及其
他移动设备上实现“端到端的解决方案”提供一个完整的JAVA运行环境。图3为JSR185中
规定的在手机软件堆栈中各个组件的关系示意图。
图3
举例来说,如果开发人员需要在J2ME程序里调用手机的短信(SMS)功能,则往往需要使
用该手机提供的专有的API。实际上,如今标准的做法应该是调用手机实现的Wireless
Messaging API(WMA)。那么在JTWI中,将会推荐开发人员使用WMA,而不是专有的API

毫无疑问,JTWI的推出,将督促各个制造商为开发者和用户提供标准化的CLDC和MIDP实
现,以克服目前J2ME应用程序的不足,会进一步加强它们的可用性,从而促进其更大程
度地在用户中的普及。
J2ME最终会向什么方向发展?
有了通信技术、互联网的发展,我们不难幻想某一天我们能够使用任何设备(PDA、计算
机、手机)、在任何时间、任何地点获得所需要的任何服务(接收邮件、购物、股票查
询等),这就是Sun公司推崇的为客户提供“按需服务(Service on demand)”的理念
。要实现“按需服务”,就需要采用Web Services的机制作为技术框架。(要了解Web
Services的基本概念,请参见《Web Services带来了什么》,http://gceclub.sun.com
.cn)
图4
如何真正地将移动设备融入到Web Services中去呢?这就需要使得PDA、手机等成为Web
Services的客户端,那么这些设备至少应该具有处理XML信息的能力。J2ME Web Servi
ces规范(JSR172)正是为了解决这个问题而来,图4示意了将J2ME和Web Services结合
起来的系统架构。
JSR172即将发行,让我们在它正式出台之前对其做一个初步的了解。首先,该规范的制
订是为了给J2ME平台增加两大功能:一是使其能够远程访问基于SOAP/XML的Web Servic
es;二是使其具有解析XML数据的能力。为了实现这两大功能,JSR172新定义了提供相应
功能的两个可选包。这两个包占用内存非常少,XML-RPC部分大概需要25-30KB的空间,
而XML解析器则需要35KB左右。需要强调的是,规范中只提供了对客户端访问Web Servi
ces的支持,而没有给J2ME设备以作为Web Services提供者的能力,这也是从J2ME设备只
具有有限资源这个实际情况出发的。
对于J2ME已经有一定使用经验的朋友可能会提出,即使没有JSR172,也可以使用kSOAP和
MIDP合作完成J2ME Web Services的开发。kSOAP是专门为KVM(即基于CLDC)开发的支持
SOAP的一个开放源码项目(参见http://ksoap.enhydra.org),我们可以引用kSOAP中提
供的第三方类库来支持Web Services。但是有了JSR-172的支持以后,我们可以不使用k
SOAP了,而且JSR172既可以在CLDC也可以在CDC上工作。
当然,J2ME Web Services由于其所在平台的特殊性,相对“真正的”Web Services来说
,还存在着很多的限制。比如在规范的第一个版本,只对JAX-RPC的模型提供支持,也就
是说仅支持同步的访问方式,使用J2ME客户端可以向服务器发送RPC请求和获得RPC响应
。而对异步的消息机制的支持,我们只能寄希望于以后的版本。另外,JSR172还没有对
UDDI(Universal Description, Discovery, and Integration)的支持,也就是说MID
let无法在运行中动态地“发现”Web Services。不过这一点可以通过使用开发工具,利
用WSDL(Web Services Description Language)的定义产生 stub的方式“静态”地来
解决。
总结
J2ME针对嵌入式和移动设备,提供了开发和运行应用程序的平台,随着新的规范的不断
推出和众多制造商、软件开发商的支持,J2ME正在飞速向前发展。JTWI将保证J2ME应用
程序在不同制造商的产品上的兼容性。今后J2ME将借助Web Services的力量,真正成为
企业级信息解决方案中不可或缺的一部分。
参考文献
1)无线JAVA技术简介,http://wireless.java.sun.com/getstart/


2)J2ME Datasheet,http://java.sun.com/j2me/j2me-ds.pdf
3)核心J2ME技术与MIDP,By John W. Muchow, Sun Microsystems Press
4)Java 2 Micro Edition概述,梅其波,Sun网络社区http://gceclub.sun.com.cn
5)JSR-118: 移动信息设备Profile 2.0,http://jcp.org/en/jsr/detail?id=118
6)JSR-172: J2ME Web Services,http://jcp.org/en/jsr/detail?id=172
7)JSR-185: 无线领域的JAVA技术规范,http://jcp.org/en/jsr/detail?id=185
8)Can Sun"s mobile posse ease J2ME developers" woes? By David Berlind, Janu
ary 29, 2003
9)BREW白皮书,http://www.qualcomm.com/brew/about/whitepaper.html
10) Qualcomm eats hat in mobile Java deal,By Elizabeth Biddleco

mbe,March 13 2003,http://www.theinquirer.net/?article=8304
11) Web Services带来了什么,王昱,Sun网络社区http://gceclub.sun.
com.cn
对该文的评论
Victoriousboy ( 2004-04-20)
好!好好!!支持!!
johncdc ( 2003-11-16)
顶。我们的目标
ccanhong ( 2003-07-11)
新推出的MIDP2.0有没有支持浮点运算?
melice ( 2003-06-18)
.net 和j2me 不应该放在一起讨论吧?
seaoctopus ( 2003-06-17)
I love java language
紧记:好好待你身边的人
不要错了再来后悔
因为:我们真正能伤害的
只有关心我们的人
而且:一旦真正受到伤害
怎么修复都会有疤



收藏到ViVi   收藏此页到365Key
上一篇: [转载] 问xp2500+性能问题
下一篇:Java中操作Windows注册表的代码示例
用户名:新注册) 密码: 匿名评论 [所有评论]
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
本栏搜索
  • Google
   网站首页 -  网站地图 -  技术学习 -  网站投稿 -  帮助中心
Copyright 2003-2008 www.javah.net All Rights Reserved
2008 如果你喜欢本站 请收藏本站 并推荐给你的朋友一起分享