扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
编者按:当语言技术走向前台,成为通信应用“解决方案”的一种时,Java与BREW之争也日益明显。今年初,中国移动联合移动设备商、SP等举办了Java大赛,并且正在或将要举办类似活动,以大力推广Java在手机、互联网等通信领域的应用。另一方面,从10月15日开始,中国联通和美国高通公司合资成立的联通博路公司在全国推广基于BREW的应用大赛,此举吸引了包括媒体在内的多方力量的关注。
针对这一形势,《计算机世界》组织了一个小型专题,就Java和BREW在通信领域应用的趋势探讨。当Java和BREW都有理由宣扬自己的阵营已经确立时,虽然我们还不知道这一场较量谁会更占优势,但关于技术的讨论,本身就是一个必要。在这两篇针锋相对的文章背后,不仅是两个作者的工作差异,更多是两大开发群体之间的对垒。
在经历了互联网和电子商务的淘金时代后,Java已经准备好向通信领域发展,而且巨大的商业利益已经显现出来。据Ovum研究公司预测,到明年初,Java技术将应用于2.67多亿部移动设备,而Java手机目前已然在北美和欧洲大行其道。更有分析公司预测,到2007年,几乎100%的手机都将采用Java技术,Java已经回归到嵌入式无线通信领域。
Java在嵌入式通信领域的应用与发展颇具传奇色彩。1991年出现的Oak(Java语言前身)技术,最初的设想是在冰箱、电视等信息家电产品中嵌入可编程通信控制平台,以实现这些设备间的数据通信。然而在当时,Oak并没有受到开发者所希望的欢迎,整个市场对这一新技术语言的重视远远不够。
1995年后全球爆发的互联网络信息革命为Java带来机会,Java成为众多编程语言和编程技术中的黑马,迅速成为全球各大IT厂商应用开发平台的新贵,不仅一跃成为桌面应用(J2SE)平台,更在很短的时间内成为企业级应用(J2EE)开发平台。
如今,Java已经回归到嵌入式无线通信领域,并且这次是有备而来。
从Sun到与Sun无关
在1999年的JavaOne大会上,Sun Microsystems 介绍了第一个袖珍版 Java和第一个 KVM以及相关的类库,并于同年6月向Java团体宣布了Java的第一个Java 2 Micro Edition(J2ME)版本,为开发者提供了一个无线开发工具包Wireless Toolkit(WTK),WTK可以让开发者编译(compile)、打包(package)、部署(deploy)和执行(execute)J2ME应用,这一工具包还包括一个仿真测试环境,该环境用于在资源受限的设备上对J2ME应用进行模拟运行,这些仿真模拟器可以被当做插件向通信设备厂商提供,同时由这些设备商向消费者提供,例如摩托罗拉、诺基亚等。
遗憾的是,WTK中并不包含IDE开发环境和Debug调试环境,笔者认为,之所以出现这样的结果,主要原因不是Sun或JCP缺乏设计优良IDE环境的能力,而是Sun发布J2ME平台规范后,全球各软件工具开发商“百家争鸣”推出各自的IDE开发环境,虽然这样防止了IDE技术的企业垄断,却也忽略了市场和用户的个性需求。况且,自Java问世以来也没有正式提供IDE开发环境的先例。
这样做的不利在于多版本差异,但也有好处,没有正式的IDE开发环境,并不意味着开发者没有开发环境,相反,专业开发者有更大的选择余地来选择合适的IDE,甚至从Opensource中获得免费的Wireless IDE工具,当前一些主流Java开发工具已经都有相关插件支持无线开发环境,例如Sun ONE Studio、JBuild、Oracle9i JDeveloper等。
从Sun发布袖珍版的Java技术标准,到IDE多种类局面出现,Java正走着一条整个产业化前进的道路。
Java技术的典型代表J2ME
Sun 将J2ME 定义为“一种以广泛的、以消费性产品为目标的、高度优化的Java 运行环境,这些环境包括寻呼机、移动电话、可视电话、数字机顶盒和汽车导航系统等。”但由此也可以明显看出,要为所有这些设备定义一种最优化、或者接近最优化的单一技术是不可能的,因为这些设备的处理器能源、内存、固定存储器和用户界面的差异都非常之大。为解决这一问题,Sun 公司将适合 J2ME 的设备的配置分成各个部分,然后再进一步细分,其他品牌的Java技术也采用了大体相同的方式。
在第一步的划分中,Sun 将各种设备按照处理性能、内存和存储能力划分成CDC和CDLC两大类,需要说明的是,这一分类方法并没有考虑应用者最终的使用目的。在这一基础之上,Sun定义了 Java 语言的一个剥离版本,它能够在每一类设备的限制下工作,也包括通信设备,同时提供最低限度的 Java 语言功能性,这一点,对于作为消费类产品的终端通信设备而言,非常重要。
移动信息设备简表(MIDP)是J2ME补充CLDC配置的Java API集合,也是基于CDC和CDLC的最上层。MIDP为开发者提供了计时器、简单固定存储器、通过 HTTP 的连网等常用API,开发者可以通过MIDP提供的界面快速开发UI元素来构造J2ME应用,这些元素包括常用的:
Alert 用于通过屏幕向用户显示有关异常情况或错误的信息;Choice 用于实现从既定数量的选项中进行选择;ChoiceGroup 可提供一组相关选项;Form 作为其他UI 元素的容器;List 提供选项列表;StringItem 提供只显示(display-only)字符串功能;
TextBox 允许用户输入和编辑文本的屏幕显示;TextField 允许用户输入和编辑文本,多个 TextField 可放到一个 Form 中;DateField 作为可编辑组件,用于表示日期和时间信息,DateField 可以放到 Form 中;Ticker 用于文本的可滚动显示等。
当开发者对界面控制有较高要求时,可以使用Canvas技术来实现图形化的界面输出,利用Double buffering技术实现流畅的动画处理效果。MIDP还提供了记录管理系统RMS(Record Management System),RMS的记录管理系统存取数据到移动设备中。
在CLDC中提供一个通用的连接框架(Connection Framework),我们可以使用该连接框架从Web端发送和接收数据,这一连接框架实现Http1.1协议。在企业级应用开发中,HttpConnection或Socekt经常会和Threads技术应用在一起,以提供高性能的企业数据连接。
熟悉Java Serverlet的开发者在编写J2ME程序时并不会感觉环境的陌生,因为J2ME为每个应用提供了类似于Serverlet的有生命周期管理的MIDlet,每个J2ME应用都必须扩展MIDlet类,以便能够让应用系统控制它。
Model-View-Controller,(MVC,Model为维护应用模型的状态,View指通过图形或非图形模式表现Model,Controller接收外部指令更新Model或View)J2ME的开发者必须参照MVC设计模式,因为整个设计需要在完成最后UI步骤之前完全测试通过商业逻辑部分,以保证在仿真运行环境下的联调焦点放在UI控制上。
Java之于GPRS
GPRS是按欧洲电信协会GSM标准定义的封包交换协议,可快速接入数据网络。它在移动终端和网络之间实现了“永远在线”的连接,而网络容量只有在实际进行传输时才被占用。现在,我们已经习惯将移动通信分为三代。第一代是模拟的无线网络; 第二代是数字通信,包括GSM、CDMA等;第三代是分组型的移动业务,称为3G,TD-SCDMA、WCDMA和CDMA2000的所谓3G之争,已经为常人所熟悉。
GPRS是通用无线分组业务的缩写(General Packet Radio System),作为介于第二代和第三代之间的通信技术,通常也被当成2.5G,目前正通过升级GSM网络实现它。
为了推动GPRS,爱立信、PALM、IBM、Oracle和Symbian于1999年10月成立GPRS Application Alliance,即GAA。J2ME技术让移动设备拥有了自动下载、部署和运行Java应用的环境平台,将复杂的程序处理从传统的PC系统搬到轻巧、随身携带的便携移动设备中,更为关键的是,J2ME的推出引发了手机等无线终端的增值业务,继而逐渐培育出一个利润丰厚的无线应用行业。由于技术开放、标准容易统一的特性,使得Java技术的上下游技术以及设备提供商都能够准确找到共同的利润点,并加以放大,Java为全球无线增值业务提供了一个绿色的生态链。
目前,Java结合成熟的GPRS通信网络,已经开发出多种增值无线应用,同时也成为普及GPRS网络的关键应用技术。分析当今主流的应用成果,大致可归纳为娱乐游戏、位置服务、信息点播、电子商务、公共设施、企业应用、开发工具等几大类。
◆游戏娱乐类 这是当前应用已经比较普遍、应用种类也较繁多的一种应用。通过GRPS网络,可以让支持Java的手机用户下载各种小游戏、视频、图片、电子小说等电子消费类J2ME应用,成为电信运营商推动增值服务的核心业务。
◆位置服务类 这一类服务的本质是,利用J2ME的图形处理能力绘制全球定位系统并反馈位置数据,从而为特殊行业用户提供可视位置服务。
◆信息点播类 通过Http连接服务,以J2ME应用实现新闻、证券消息、天气预报、生活等信息资讯的点播服务,这一类服务也成为运营商下一阶段大力推广的业务模式。
◆电子商务类 通过J2ME提供的信息安全、传输技术实现手机银行、无线交易、股票查询等应用系统,当前,无论是使用Java还是Brew的电子商务类应用都还没有广泛推广开来,这与整个消费市场信用度有关,同时,在涉及到银行与通信两个领域的合作时,有很多的问题还有待进一步解决,有些还会涉及到法律层面的认可问题。
◆公众设施类 通过GPRS网络连接到数据服务中心,对数据进行无线远程操作,这类系统较为常见的有交通车辆信息查询系统、身份证查询系统等。
◆企业级应用类 结合企业内部业务管理系统实现无线办公环境,这类系统主要针对企业用户,应用需求比较分散,常见的有接入到企业内部办公系统数据库的无线办公自动化系统(例如炎黄盈动的iWork/OA)、业务信息处理系统,就市场发展来看,基于Java技术的企业级应用也会在未来成为中国移动运营商重要的收入来源之一。
◆开发工具类 为实现J2ME应用而单独提供的各种中间件、数据库、Framework等,例如Sybase、Oracle的J2ME数据库、XML解析器。
J2SE、J2EE和J2ME作为Java在三个不同方向的开发平台,运行在资源受限设备上的J2ME平台可以方便地与J2SE、J2EE应用进行通信,甚至可以共享J2EE或J2SE应用的类程序,这降低了传统Java程序向无线通信领域移植的难度,同时遍布全球的上百万Java程序员及积累了近10年的Java技术资源,也降低了J2ME的入门难度,成为J2ME的支持者。
从2003年的JavaOne大会可以看出,包括Sun在内的众多公司正将业务瞄准J2ME市场,例如Sun就推出了新的Sun开发商网络移动项目(Sun Developer Network Mobility Program),为项目成员提供完整的资源包,用于创建、测试和验证基于J2ME技术的应用,并将这些应用通过市场提供给消费者和企业,一旦具备市场环境条件,Java开发者大军将会迅速向J2ME挺进。
正是这些因素的影响,使得目前中国移动当前推动的各种手机应用和中国联通与美国高通公司联合推动的Brew平台形成对垒局面。无论掌声来自何方,受益的将会是我们大众消费者。
相关链接
CLDC
J2ME平台定义了两个底层配置CDC和CLDC。其中,CDC(Connect Device Configuration,连接设备配置)规范用于比PC机小、但同时具有多于 512K内存的设备,这一类设备包括互联网络电视系统、机顶盒、POS系统、汽车导航以及娱乐系统,这些应用被运行在JVM虚拟机中。
CLDC(Connected Limited Device Configuration ,有限连接设备配置)规范应用于内存128K到 512K之间的消费类电子设备, 这一类别中典型的代表设备包含呼叫器、移动电话、个人数字助理PDA和POS终端等。这些应用通常在移动设备的KVM虚拟机中运行。
从J2ME类库发展来看,CDC配置的类库包含了J2SE1.3应用程序接口类库的一个子集,并针对资源受限设备做了扩展。由于应用于CLDC配置的设备资源更受限制的原因,CLDC配置类库实际上完全是CDC类库的子集。
濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴濐潟閳ь剙鍊圭粋鎺斺偓锝庝簽閸旓箑顪冮妶鍡楀潑闁稿鎹囬弻娑㈡偄闁垮浠撮梺绯曟杹閸嬫挸顪冮妶鍡楀潑闁稿鎸剧槐鎾愁吋閸滃啳鍚Δ鐘靛仜閸燁偉鐏掗柣鐘叉穿鐏忔瑧绮i悙鐑樷拺鐟滅増甯掓禍浼存煕閹惧娲撮柟顔藉劤鐓ゆい蹇撴噳閹锋椽姊婚崒姘卞闁告娲熷畷濂稿Ψ閵壯勭叄婵犵數濮撮敃銈団偓姘煎弮瀹曪綀绠涢弮鍌滅槇婵犵數濮撮崐缁樻櫠濞戙垺鐓曢悗锝冨妼婵′粙鏌曢崶褍顏€殿喕绮欐俊姝岊槹闁逞屽墯鐢繝寮婚悢鍏煎癄濠㈣泛锕ュ▓濠氭⒑閸濆嫮鐏遍柛鐘崇墵楠炲啫饪伴崼婵堝幐闂佺ǹ鏈粙鎾广亹鐎n喗鐓熼幖娣€ゅḿ鎰箾閸欏顏堟偩濠靛牏鐭欓悹鎭掑妽濞堥箖姊洪崜鎻掍簼婵炲弶鐗犻幃鈥斥槈閵忥紕鍘遍柣蹇曞仜婢т粙鎯岀€n偆绠鹃柛顐ゅ枑閸婃劖鎱ㄦ繝鍕笡闁瑰嘲鎳愮划鐢碘偓锝庝簼閻d即姊绘担瑙勫仩闁告柨顑夊畷锟犲礃閼碱剚娈鹃梺闈涚箞閸婃洟宕橀埀顒€顪冮妶鍡楀闁稿骸宕惃顒勬⒒閸屾瑧鍔嶉悗绗涘懐鐭欓柟瀵稿Л閸嬫挸顫濋悡搴$睄閻庤娲戦崡鍐茬暦閸楃倣鐔兼⒐閹邦喚娉块梻鍌欑窔濞佳囨偋閸℃稑绠犻幖娣灪閸欏繑銇勯幒鍡椾壕闂佸疇顫夐崹鍧楀春閵夆晛骞㈡俊鐐插⒔閸戣绻濋悽闈浶為柛銊︽そ閺佸鏌ч懡銈呬沪濞e洤锕俊鍫曞川椤斿吋顏¢梻浣呵归鍛村磹閸︻厽宕叉繛鎴欏灩楠炪垺淇婇婵愬殭缁炬澘绉归弻锝嗘償閵忥絽顥濆銈忓閺佽顕g拠宸悑闁割偒鍋呴鍥⒒娴e憡鍟為柟鎼佺畺瀹曠増鎯旈…鎴炴櫔闂佹寧绻傞ˇ浠嬪极閸℃ぜ鈧帒顫濋濠傚闂佹椿鍘介〃鍡欐崲濞戙垹绠婚柡澶嬪灩閸斾即姊虹粙娆惧剱闁圭懓娲濠氭晲閸涱亝顫嶅┑鐐叉閸旀洜澹曢幎鑺モ拺闁告繂瀚﹢鎵磼鐎n偄鐏撮柛鈺冨仱楠炲鏁冮埀顒€顔忓┑鍥ヤ簻闁哄洨鍋為崳娲煃鐠囪鍔熺紒杈ㄦ崌瀹曟帒鈻庨幋婵嗩瀴婵$偑鍊戦崝宀勫箠濮椻偓楠炲棗鐣濋崟顐わ紲闂佺粯鍔欏ḿ褏绮婇敃鍌涚厵闁稿繗鍋愰弳姗€鏌涢弬璺ㄧ劯闁诡喚鍋ゅ畷褰掝敃閻樿京鐩庨梻浣告贡閸庛倝宕归悽鍓叉晜闁冲搫鎳忛崐鍨叏濮楀棗澧绘俊鎻掔秺閺屾洟宕惰椤忣厾鈧鍠曠划娆愪繆濮濆矈妲奸梺闈╃祷閸庡磭妲愰幘瀛樺缂佹稑顑呭▓顓炩攽閳藉棗浜濈紒璇茬墕椤曪絾绻濆顓炰簻缂佺偓濯芥ご鎼佸疾閿濆鍋℃繝濠傚暟鏁堥梺璇″枟閿曘垽骞婇悩娲绘晢闁稿本绮g槐鏌ユ⒑閸濆嫷妲搁柣妤€瀚板畷婵囨償閿濆洣绗夐梺缁樺姉閸庛倝鎮″☉銏″€堕柣鎰硾琚氶梺鍝ュУ閿曘垽寮婚埄鍐╁闁荤喐婢橀~鎺楁倵鐟欏嫭绀堥柛鐘崇墵閵嗕礁顫滈埀顒勫箖閳哄懏鎯炴い鎰╁€濋幏濠氭⒒閸屾艾鈧嘲霉閸パ呮殾闁割煈鍋呴崣蹇涙煙閹澘袚闁抽攱姊婚埀顒€绠嶉崕閬嵥囬鐐插瀭闁稿瞼鍋為悡銏′繆椤栨粌鐨戠紒杈ㄥ哺閺屻劌鈹戦崱鈺傂︾紓浣插亾閻庯綆鍋佹禍婊堟煛瀹ュ啫濡块柍钘夘槹缁绘盯宕奸悢铏圭厜濠殿喖锕ㄥ▍锝呪槈閻㈢ǹ宸濇い鏂惧嫎閳ь剚鍔曢—鍐Χ鎼粹€茬凹濠电偠灏欓崰鏍х暦濞差亜鐒垫い鎺嶉檷娴滄粓鏌熼崫鍕棞濞存粓绠栧娲箰鎼淬垻鈹涙繝纰樷偓铏悙閸楅亶鏌熼悧鍫熺凡缂侇偄绉归弻娑㈩敃閿濆洨鐣煎銈嗘尰濡炶棄顫忛搹鍦<婵☆垰鎼~宀勬倵濞堝灝娅橀柛鎾寸懆閻忓啴姊洪崨濠佺繁闁哥姵宀稿畷銏ゅ箹娴e厜鎷洪梺鍛婃尰瑜板啯绂嶆禒瀣厱閻庯綆浜滈顓㈡煙椤旀枻鑰块柡浣稿暣瀹曟帒鈽夊顒€绠為梻浣筋嚙閸戠晫绱為崱娑樼;闁糕剝蓱濞呯姵銇勯幒鎴濃偓鑽ゅ婵傚憡鐓曢悘鐐插⒔閳藉绱掑锕€娲﹂悡娆撴煟閻斿憡绶叉い蹇e弮閺岀喖鎮℃惔銏g闂佺懓寮堕幐鍐茬暦閻斿吋顥堟繛鎴炵懄閻濓繝姊婚崒姘偓鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偞鐗犻、鏇㈠Χ閸屾矮澹曞┑顔矫畷顒勫储鐎电硶鍋撶憴鍕缂傚秴锕濠氬幢濡ゅ﹤鎮戦梺鍛婁緱閸ㄧ晫妲愰柆宥嗙厽閹艰揪绱曢悾顓㈡煕鎼淬劋鎲鹃挊婵喢归崗鍏肩稇缁炬崘娉曢埀顒€绠嶉崕閬嵥囨导瀛樺亗闁哄洢鍨洪悡娑㈡煕閵夛絽鍔氬┑锛勫帶椤儻顧侀柛銊ゅ嵆濠€渚€姊虹紒妯撳湱绮旈鈧、鏃堝醇閻旇櫣鏆㈤梻鍌氬€烽悞锔锯偓绗涘懏宕查柛灞绢嚤濞戞鏃堝川椤撶姴骞掗梻浣告惈濞层垽宕瑰ú顏呭亗闁告劦浜濋崰鎰節婵犲倻澧曠紒鈧崼鐔稿弿婵☆垱瀵х涵楣冩煢閸愵亜鏋涢柡灞炬礃缁绘稖顦查悗姘卞厴瀹曟垿濡搁埡鍌楁嫼缂傚倷鐒﹂敋濠殿喖娲﹂妵鍕即閵娿儱绫嶉梺绯曟杺閸ㄨ棄顕i幘顔碱潊闁炽儲鏋奸崑鎾绘偨閸涘﹦鍙嗗┑鐘绘涧濡鍩€椤掑倹鍤€闁宠绉瑰畷鍫曞Ω閿濆嫮鐩庨梻濠庡亜濞诧妇绮欓幇鏉跨疅濡わ絽鍟悡娑㈡倶閻愰潧浜剧紒鈧€n兘鍋撶憴鍕濞存粌鐖奸妴浣割潨閳ь剟骞冮姀锛勯檮濠㈣泛顦辨径锟�