一直以来,Java语言都是移动和无线应用程序的最佳平台,但是现有的技术使Java难以应用到应用程序中去。比如设备的处理功率能力不足,网速太慢和网络不安全等问题。直到设备和网络提升了速度才得以支持运用无线技术的应用程序。Java在使用网络资源方面强调的安全性和高效性使其成为在小而功能强大设备上(如智能电话和手持电话)构建企业应用程序的理想平台。这里列举出10种重要的能够完善无线应用程序的技术,以及它们对于Java开发者而言至关重要的原因。
(1). WAP
移动设备(诸如智能电话和PDA)正在被充分应用到企业应用架构之中。这种想法最初是逐渐潜入人心的,但是发展趋势却显而易见:企业用户正在将移动设备运用到日常工作当中。这就是结构设计者在勾画应用于整个企业的程序结构时需要考虑将Java运用到电话中(甚至给手机配备基本的上网功能)的原因。
基于Wireless Application Protocol (WAP)技术的具有浏览网页功能的手机在北美和欧洲一带逐渐流行起来。WAP是由无线应用协定论坛(the WAP Forum)发展并流传开来的,该论坛是由一群无线和通讯产业的公司组成,发布了能够在无线设备上所使用Web内容和应用的“产业标准” 规范。于近期被认可的WAP版本是2.0版,但要到2003年我们才可能看到支持该版本的手机批量问世。目前,WAP1.1和WAP1.2.1版本是最为流行的。
WAP开发要点:
WAP Forum 在设计1.x版本的时候是经过深思熟虑的,但它和我们熟知和喜爱的3W协议 (比如HTTP, SSL 和HTML)并不兼容。WAP1.x堆栈被定义为五层,自底向上依次是:WDP (Wireless Datagram Protocol), WTLS (Wireless Transport Layer Security), WTP (Wireless Transaction Protocol), WSP (Wireless Session Protocol), 和 WAE (Wireless Application Environment,包括 Wireless Markup Language 或 WML, 以及 WMLScript )。每一层都和3W堆栈层面大致吻合:WDP->IP, WTP->TCP, WTLS->SSL/TLS, WSP->HTTP, 以及WML->HTML。
2002年,WAP Forum引入3W协议并将其加入WAP堆栈当中。如今WAP2.0开发者能够象使用WAP 1.x协议一样运用TCP/IP, HTTP和SSL, 以WAP2.0电话为目标进行开发。虽然现在难以确定这种双向方法是否可行,这种做法无疑使WAP与World Wide Web Consortium 和IETF( Internet Engineering Task Force)的建议和标准更好的同步。WAP协议和3W协议的合并将很可能使无线Web应用更容易投入使用,但是如何设计一种可以良好运用于大或小的form factors的程序显示还是具有一定的挑战性的。Web设计师不得不用一种不同的方法在小型设备上进行页面设计,同时平衡移动设备的优点(诸如轻便性,及时性和位置识别性)和缺点(诸如传输速度慢,显示屏太小,以及输入法笨拙等)。
(2). 移动标示语言(Mobile Markup Languages)
建立并传送信息到移动设备上(例如Web电话,传呼和手持设备)的过程和将其建立和传送到台式电脑或其他Web应用程序的过程相似。当然它们也有重要的差别。开发者必须因为移动设备屏幕更小,内存更小,计算能力较弱,以及数据流量更小而做出各种权衡。因此,许多传送到移动设备中的内容没有象在Web的目前标示标准HTML4.0的版本中那样被完全格式化。这里有三种被推荐的替代方法:
WAP是一套包含WML的协议,它符合XML1.0标准。WML是一个由WAP Forum设计并实施的全球工业标准。WAP2.0中对WML和低层传输协议进行了重要改进。WAP Forum设计的2.0版本将适应W3C中关于HTTP 和XHTML的标准,安全性更好,更新后的用户界面和输入法将跟上移动电话硬件的飞速发展。
移动标示语言开发要点:
cHTML是由Access公司推出的一种标示语言,于1998年被吸收成为W3C标准。cHTML因其用在日本DoCoMo公司提供的时下流行的i-mode无线Web服务中而名噪一时。cHTML和HTML结合使用让i-mode应用发展得以轻松入门。结合DoCoMo公司的低成本B2C传输费用和i-mode在年轻人当中的声望,cHTML的成功指日可待。
目前,cHTML和WML两种语言处于竞争状态,CHTML的优势是普及广,而对WML来说,作为XML语言的实现者以及被设备制造公司和内容供应商广泛采纳则是其优势所在。如今,cHTML和WML被溶入了结合所有最佳标示选项的HTML新版本-XHTML Basic 和 XHTML Mobile Profile。XHTML Basic 语言规范的制定者来自于各大公司,包括Openwave(Phone.com支持WML),Access Co. Ltd. (支持cHTML), W3C (从 XML 和 HTML 的角度出发), Sun, Ericsson, 以及Panasonic。
XHTML Basic是XML中对HTML4.01版本的实现。XHTML花费了相当长的时间改进了在HTML规范中的许多模棱两可的问题。在XML的严格引进下,XHTML给浏览用器及其他浏览设备提供了清楚的页面输出导向,并允许使用“模块”组件选择处理浏览器性能的变化。XHTML是HTML的接替版,在未来的版本中所有的浏览器都将支持XHTML。
2000年12月,W3C发布了XHTML Basic 规范作为限定资源设备的推荐规范。2001年,WAP Forum 和DoCoMo正式采用XHTML Basic作为未来浏览器开发的基本标示语言。XHTML Basic是通过使用XHTML模块来实现的XML文档类型,这些模块是构造XML文档类型的“积木”。XHTML Mobile Profile是增加了用于显示元素和内部style sheets模块的XHTML Basic的扩展集。
符合WAP2.0技术的设备将通过同时支持WML 1.x 和 XHTML Basic或通过实现XSLT转换来和WML1.x向下兼容。符合XHTML Basic规范的WAP2.0设备将具有先进的用户界面,动画效果,弹出式菜单以及颜色,这些将使得WAP内容与i-mode 内容一致。另外,Access公司和DoCoMo已就向XHTML Basic规范靠拢方面达成部分一致。
(3)多模式标示语言(Multimodal Markup Languages)
对无线Web程序的开发者来说,最难的一关是设计用户输入法以及在设备上显示出信息,这在很大程度上是一种使用性能大挑战。对许多缺乏耐心的人来说在电话的数字键盘上打字是最为乏味和痛苦的。而且,电话机以及手持电话的屏幕太小也会使信息难以阅读,并给大量信息的显示造成一定困难。
现在有一种方法可以使这种情况得以改善,它可以在一定程度上解决问题,而且效果非常明显:使用语音传输。每种电话的听筒都有一个扩音器和扬声器用于语音的传入和传出。很多PDA产品都配有扩音器和音质良好的扬声器。有了这些语音传输工具,移动程序设计者就可以给用户提供一种其他方法去捕获和传送信息。
多模式标示语言开发要点:
SALT(Speech Application Language Tags)是另一种解决方法,和XHTML+Voice不同,SALT 不但没有借助于VoiceXML,反而特意避免VoiceXML的开发模式以及VoiceXML支持本语言中特有的重用性(见列表1)。SALT能够充分利用支持语言的所有事件和脚本。例如,在使用HTML时,SALT标签的用法就和其他HTML标签一样。SALT标签可以通过使用脚本和包含属性,方法和事件等进行设计,而这些属性,方法和事件可以通过HTML页面的文档对象模式进行访问。这并不是说SALT是绑定在HTML上的,其实SALT标签能够和SGML家族中的任何标示语言结合使用,比如Wireless Markup Language,Compact HTML,以及用在移动电话和手机上的具有新特性的XHTML profiles。同时开发者也可以将SALT和一些可视性标示结合使用,比如WML,XHTML,或用于只传输声音(voice-only browsing)的标示(年12月,W3C发布了XHTML Basic 规范作为限定资源设备的推荐规范。2001年,WAP Forum 和DoCoMo正式采用XHTML Basic作为浏览器未来开发的基本标示语言。XHTML Basic是通过使用XHTML模块来实现的XM在这一点上和VoiceXML很相似)。
| 代码样例显示出如何将SALT标签和HTML语言结合使用。当点击标签时,扬声器按钮会触发<listen>标签的Start()方法。<grammar>标签使口语和可识别的字或短语相匹配。<bind>标签将结果(//orderNo)映射回HTML文本的输入环节。
<form> <listen id="listenOrderNo">
|
(4) 短信传送(Short Messaging)
Short Messaging Service (SMS) 短信息服务是指在无线电话或传呼机等无线设备之间传递小段文字或数字数据的一种服务。SMS是一种相对较简单和可靠的技术。SMS在1992年首次出现在GSM电话中,而今所有的主要无线设备都支持它,而且大多数移动电话都有发送和接收SMS信息的功能。有数据显示仅在2001年的12月其间全球就有300亿条文本消息被发送出去。用户可以通过电话键将160个以内的数字或字母仔细地输入一条SMS信息中。用户也可以借助使用缩写字母或者其他捷径轻松完成信息输入过程。
短信息开发要点:
由于短信息的流行,老式的SMS面临着革新。一种新的换代产品增强型信息服务(Enhanced Messaging Service EMS)问世了,它使用了SMS技术并新增了对二进制对象如声音、图像和动画等的支持。EMS可以使用预加到手机中的图像和声音。接收的信息中可以参照这些对象而不用将其下载。由于EMS对象是二进制编码,所以会使开发过程就变得更复杂一些,而且会比单一的文本信息载荷更容易出错。因此在使用SMS或者EMS系统的界面中编写代码不是轻松的工作。Simplewire的 Java SMS SDK和object XP的 jSMS等产品将同各种SMSC进行交互的大量细节方面的内容掩藏了起来,并给用户呈献一种清晰的对象界面以执行传信功能。
一些手机制造商正在研究一种更为前卫的多媒体短信发送功能。这种多媒体信息服务(MMS)是在SMS产生10周年后的一个新生代产品。MMS使用XML格式和现有的HTTP及WAP基础结构。MMS在产业界有着强大的后盾,WAP Forum已将其加入新的WAP 2.0建议书中,而手机制造巨头Nokia, Motorola, 和Ericsson也开始将MMS用于他们未来的产品中。MMS网络将手机和其他MMS用户连接到MMS代理和服务器上,它们会依次连接到Internet电子邮件服务器上,以及SMS和EMS系统中。这样将会使开发者轻松进入传信系统中,只要使它兼容于我们熟知的Web和无线开发界面及工具就可以了。
MMS已被安装到50多种装置上,但要普及的话恐怕要等到更快性能更好的第三代网络和电话的问世了。在它的首次迭代过程中,MMS使用了W3Cd 一个标准-Synchronized Multimedia Integration Language( SMIL)和WAP的WML作为其基本语言在多媒体信息中体现其文本风格和色彩图象。
(5)SyncML
信息化同步是无线设备产生之后应运而生的产物。负责管理着我们的日程安排,通讯簿,任务目录和电子邮件的个人数字助理和智能电话通常并不能完全发挥其作用,除非将他们的信息库与个人电脑中的类似信息库或者企业信息服务器相连才能将其完全利用。有很多实现同步化的方法,但通常最简便的方法也就是最好的方法:用一个普通协议将基于文本的更新材料从一个数据源传到另一个。而SyncML就是这样一种方法。(见列表2)
| 代码样例显示出如何将SyncML的<add>元素和vCards的同步使用。<cred>元素提供凭证批准该操作。<meta>元素调用"text/x-vcard"命名空间。
<Add>
|
SyncML开发要点:
由Ericsson, IBM, Lotus, Motorola, Nokia, Matsushita, Openwave, Psion, 和 Starfish Software提供赞助,SyncML 联盟建立和发行了SyncML协议,它是一种使依从该协议的设备、开发程序和服务在网络中实现信息同步化的通用语言。SyncML用于在HTTP,WSP(会议层协议,基于WAP的无线Web应用),OBEX(一种对象交换协议,它基于红外线和蓝牙技术并用于构建多种操作系统)和低层的TCP/IP以及电子邮件协议诸如SMTP, POP3, and IMAP当中。
SyncML协议使用XML语言来编译命令和数据并旨在成为和HTTP,SSL,和WAP一样的最好的Web协议,因此它兼容用于Web-friendly移动平台(如J2ME)的开发程序。开发者只需使用最少的工具便可在移动程序中加入同步化性能。用来建立和读取XML文档的剖析器是处理XML执行过程最好的方法,但却不是必须的方法。一条SyncML信息本身就是一个经过处理的包含标题和正文的XML文档。标题由SyncHdr元素和该信息的路由和版本信息组成。正文包括SyncBody元素和同步命令,以及相关数据。
正文部分是真正执行处理过程的地方。SyncML指定13种必带命令。例如,Add元素可以包括授权认证,指定同步化数据格式的元数据,以及数据本身。这个元数据可以直接被使用,例如,通过调用适当的XML命名空间来确定被附上的数据是一个vCard。然后该数据将出现在“text/x-vcard”命名空间里。
SyncMl语言有相应的SyncML框架支持,这种框架体现出用于完全的端到端交叉平台同步化解决方案(几乎包含所有移动设备,台式机和服务器数据源)的结构,但是SyncML联盟也不会摈弃现存的端对端单一平台解决方案。Microsoft的 ActiveSync技术在Windows平台上运行的很好并且Windows很可能是其单一平台。然而我们还是期待Microsoft和Palm、IBM等大的移动电话制造商合作,那么其他制造商将有可能实现同单一设备中普通实例间的同步化。
(6) 802.11b 无线局域网标准
802.11b无线局域网开发要点:
IEEE小组的802.11b标准可能算是当今无线计算技术应用下最重要的主要产物了。IEEE的802.11b是802.11家族中的一种新标准,它利用无线电发射频率将电脑及移动设备同局域网连接起来。它不像“蓝牙”一样有个容易记住的名字(有人曾试图给它取个好听的别名叫做“Wi-Fi”),而且它也没有象CDMA2000 或者 UMTS (Universal Mobile Telecommunications System)那样被冠以第二代无线技术奇迹的美誉。802.11b连接通常比其他类型的无线网络连接的速度更快,而且使用802.11b无线区域网(WLANs)非常经济,也很易于安装,甚至对在家里使用的用户来说也是如此。虽然在此之前,802.11b只使用在公司办公室和家用网络中,但现在802.11b网络的使用(常常是收费的)已遍布公共区域的“热点区”之中。结合无线局域网在办公室、家庭中的普及和在公共热点区的收益,802.11b绝对是一个大卖点。
802.11b的成功基于以下几个原因:应用程序开发者无需知道他们的程序是在哪种网络连接(无线或有线)中运行的,因为802.11b(还有其后续标准802.11a 和 802.11g)及其有线标准使用同样高级别的协议,类似的还有TCP/IP, HTTP, TLS等等。802.11b采用2.4GHz无线频段并支持最大数据为11Mb/s传输速率,尽管在实际应用中的速率会低一些,那是由于用户在同一射频中共享带宽或是因超过支持范围而使性能降低。802.11a在5GHz频段下提供56Mbit/s数据传输率,尽管它在实际应用中的速率也同样会有所降低,但它还是比802.11b快好几倍。802.11g是802.11家族中的另一成员,它能在2.4GHz频段下提供56Mbit/s数据传输率。目前只有802.11b标准是市场的主流,但802.11a和802.11g将紧随其后并成为其替代产品。
IEEE802.11标准一个主要的安全问题已经解决。在WLAN安全性检测性的庇护下,运行在802.11标准设备中的软件更新有很大改进,但对于那些处理机密信息的应用开发人员来说,最好还是给代码加一个额外的保护层。
(7) 新一代无线电话网络
新一代的无线电话和数据网络使企业应用中的无线广域电话和数据网络在速度上迈进了一大步。不仅网速将提高5到10倍,而且连接模式由原来的回路交换(circuit-switched)提升到包交换(packet-switched)。这就意味着设备会始终连接到指定IP地址并能进入到所有Internet服务中去。新一代技术中最有代表性的三种是:CDMA2000,General Radio Packet Service(GPRS), 和Enhanced Data Rates for Global Evolution (EDGE)。
新一代无线电话网络开发要点:
CCMA2000是现存的第二代CDMA(码分多址数字无线技术Code Division Multiple Access)移动电话系统的后续产品,主要流行与美国和亚洲一带。它派生出的CDMA2000 3x是一种用于快速的(码片速率2至4)第三代(3G)无线通信国际电信联盟标准。网络系统使CDMA2000 1x的最高传输速率达到144Mbps(但在实际应用中的速率大约只达到最高速率的三分之一或一半而已)。和GPRS和EDGE一样,CDMA2000 1x被看作是一个2.5代移动通讯产品,因为它是处于第二代到第三代的过渡产品。
GPRS将第二代GSM移动系统的速度提升到一个更高的阶段,并实现了包交换网络,它在欧洲和美国一带最为流行。和CDMA2000相比,GPRS的同时传输语音和数据的速度比目前传输速率是10Kbps的标准更快。在2002年,开发人员能将CDMA2000和GPRS应用推向全美国,多数通讯公司期待能够实现一种接近56Kbs传输速度的数据服务。
EDGE是GSM技术的未来一代。EDGE使用增强型调制系统将数据传输速度提高到400Kbps,它比现存的GSM无线电频波的速度高很多。
2002年之后(具体可能要到2003之后),世界会迈进很多人认为的真正的第三代移动通讯阶段。届时CDMA2000将发展到3x阶段,而GSM网络也将迈进宽带CDMA(WCDMA)时期。WCDMA是Universal Mobile Telecommunication Service (UMTS)的基础。目前看来CDMA2000和UMTS将同时占领3G市场。
(8) 无线应用中的安全问题
无论是无线连接或是无线设备,端到端安全模式都是任何无线应用程序开发需要解决的首要问题。业界新闻报道说目前无线网络安全缺乏的情况很普遍,包括IEEE802.11b WLANs都有未经授权的登陆以及遭受到使一些无线Web网络颇为头疼而臭名昭著的“WAP gap”的侵袭。那么端对端的无线安全模式真的难以实现吗?其实对于任何一种安全模式来说,没有一种是完全牢不可破的,但所有大的无线协议都提供一些方法用来保护机密信息和阻止未经授权的访问。
无线应用中的安全性开发要点:
控制设备访问权限。企业对几乎所有的PDA、电话和移动设备实行加密保护。企业开发者可以采用这种平台层的保护来阻止未经授权的访问,或者用一个单独的个人识别号码(PIN)进入程序一个额外的保护层。
验证、授权和审核。Triple-A是安全工作做的很好的企业一直采用的一种方法。企业无线开发人员可以将用于extranet和intranet程序中的相同的triple-A用在无线开发中,由于经常在内部使用的密码很难从电话键上输入,所以另一种全数字型的密码被广泛用于移动设施。
保密性和完整性。目前许多移动设备都有足够的功率支持数据加密。开发人员很容易使用运行在Web上的SSL/TLS和无线Web中的WTLS(源自WAP堆栈)。使用被批准的证书也是确保从正常的渠道获得内容的一种直接方法。
已知的弱点。最有名的无线安全漏洞是在IEEE802.11b和WAP中发现的。802.11b安全模式的主要组件是Wireless Equivalent Privacy (WEP), 其加密方法和有线Ethernet (802.3) 的标准相类似。安全专家已经证实WEP的安全层是可以被破坏的,然而许多基于802.11b的WALN连WEP保护都没有。用于无线Web 的第一版WEP中列举出一个被称作是wireless transport layer security (WTLS) 的SSL-like实现能够很好的运行安全模式,除非在某一时刻信息的保护权由WTLS转向TLS时(此时无线Web会连接到World Wide Web上)才会发生意外。这种情况一般发生在WAP代理或网关之中,但在公司或网络操作服务器室中通常是安全的。要确保网管能够对服务器的使用权加以限制。
(9) 用于蓝牙技术的Java APIs
蓝牙是一种无线网络技术,最初是由计算机制造商和其它制造商提出的,它替代了电缆,在计算机、PDA、电话和外设之间实现了连接。例如,蓝牙设备现在可以用来连接移动电话和免提耳机。自出现了蓝牙技术以来,它就给我们设立了更高的目标,使我们可以创建“个人网络(personal area networks,PAN)”或“piconets”。理论上,当蓝牙设备之间建立了连接时,就自然地形成了PANs。例如,当一台笔记本电脑连接到一台打印机时,就会形成一个PAN。实际上,验证、访问权限的控制以及其它的安全问题,再加上来自其它无线网络可能的干扰,会使这种情况变得复杂。
蓝牙技术开发要点:
总的来说,无线网络的蓝牙版本受到了越来越多的人的喜爱,从本质上说,蓝牙技术很可靠。无线和计算机业界的倡导者们将蓝牙技术作为一种规范来开发,将它作为一种低成本、低功耗的无线通讯方法,来连接运用未经授权的2.4GHz频带的设备。该规范主要针对三种电源,它们与三个连接间距相应:100 米,10 米和0.1 米。最常用的是在多达七种不同设备之间提供10米的连接间距。蓝牙硬件和软件的设计人员考虑到了由于安全性和网络竞争带来的复杂性(如801.11b无线LANs)。
想在应用程序中运用蓝牙技术的Java开发人员可以从两方面来考虑。首先,蓝牙技术可以是操作系统提供的一个服务,它可以从应用程序得以实现,这同HTTP掩盖了潜在的网络协议(如802.11b和Ethernet)的低级实现有很多共同之处。第二,开发人员可以用Java APIs for Bluetooth Wireless Technologies(JABWT)来直接访问蓝牙服务。Java Community Process于2002年3月将JABWT作为最终规范发布了。JABWT至少需要512k的内存用于Java 2、一个蓝牙堆栈和频带和J2ME Connected Limited Device Configuration(CLDC)的一个兼容配置或扩展配置。
JABWT为蓝牙技术的实现提供了范围很广的一组接口,在JSR-82中有文件证明。JABWT将APIs根据discovery、设备管理和通讯加以分类(见图1)。第一组接口可以帮助我们发现设备、查找设备并推广设备。设备管理APIs包括安全性和Generic Access Profile方面的信息,它们用来描述本地设备并得到远程设备的信息。通讯APIs用来同其它蓝牙设备进行通讯,这些通讯是通过协议来完成的,如OBEX(Object Exchange,也广泛用于红外线)、RFCOMM(通过Serial Port Profile提供)、L2CAP(Logical Link Control and Adaptation Protocol)和更高级的协议(如TCP/IP)。JABWT运用J2ME的Commected Limited Device Configuration中定义的Generic Connection Framework来提供基本的连接功能。
(10) JavaPhone API
JavaPhone API定义了一组基于Java的接口,可以用来访问智能电话和其它无线设备的功能(见图2)。网络操作人员、设备制造商和内容提供商运用JavaPhone在PersonalJava平台上构建设备。企业级Java开发人员将JavaPhone API作为一种稳固的、易用的对象接口用于设备所提供的服务,如Java Telephony API(JTAPI)、数据包信息传递、数据访问(联系人、日历、任务和用户配置信息)、电源管理和应用程序安装。
JavaPhone开发要点:
Java开发人员用核心的Java Telephony APIs来执行基本的打电话、接电话的任务。JTAPI的扩展功能可以用于呼叫中心,扩展电话的控制(如持机等候和电话会议)以及媒体数据流(如按键音)。JTAPI移动核心接口是专门用于移动电话的。例如,MobileProvider接口提供了一个有效的方法来检查该平台是否实现了一个特殊的功能。Datagram Messaging APIs可以让我们发送并接收文本信息而不需要知道根本的传输细节。应用程序的开发人员只需要知道如何格式化并发送信息就行了。JavaPhone可以支持在GSM上运用Short Messaging Service(SMS),也支持其它的传输形式。
AddressBook、Calendar和User Profile APIs给开发人员提供了一个基于对象的接口,可以用来访问智能电话的个人信息管理(PIM)库。AddressBook将vCard规范(RFC 2426)用于联系信息,Calendar将vCalendar规范(RFC2445)用于日程管理和任务管理。对于移动和无线设备来说,安全性总是一个关键的问题,所以JavaPhone开发人员应该只允许可以信任的应用程序从数据库读取信息、将信息写到数据库以及发送和接收信息。
Power Monitor API提供了有关电池标准、预计电池寿命、以及设备是否接通电源的信息。Power Management API可以让开发人员感受到设备状态发生的变化并作出响应,如设备关机状态、全功耗状态、有效电源状态、挂起状态(suspend)和睡眠状态。Install API支持为开发和发布应用程序进行打包,包括对Jar文件、主程序切入点、图标和版本的支持。
关于作者:
Jeff Jurvis是Compaq Golbal Services的移动和无线应用方面的顾问,定居在Minneapolis,MN。他的联系方式是jeff.jurvis@rainier.com。