编者按:IDC移动设备部的分析师AlexSlawsby预测2004年全球手机用户总数将达到14亿,而且销售势头没有减缓的迹象。这些手机功能无所不包:数码相机,游戏,电子邮件和越来越多的地图。作者论述了如何利用针对消费者和嵌入式设备的Java2-MicroEdition(J2ME),开发面向手机用户的ArcIMS客户端的技术。
面对不断攀升的手机销售数字,全球超过1亿部的J2ME的手机格外引人注目。J2ME设备的增加为手机网络运营商和应用开发商提供了扩展其服务的好机会。用户将从这种形势中获益,他们可以选择众多独立于蜂窝网络运营商的应用提供商。
人们通常随时携带手机,如此一来,这些手机就可以很好的被用来做定位服务,并通过一个地图服务客户端提供空间信息。虽然目前有许多地图服务可用于手机,但这些服务大都基于用户识别模块(SIM)工具或无线应用协议(WAP)的。这些标准的使用界面往往不够丰富和友好。另一方面,基于J2ME的设备高度支持交互式应用,支持特定设备的自定义设置。因此开发ArcIMS的无线地图浏览器是实现这一类型交互式应用的理想办法。
J2ME设备的缺点
当然,与个人电脑相比,大多数的J2ME设备功能相当有限。最明显的是:
路显示器小(单色96×56,彩色128×128)。
路处理能力低。
路内存有限。通常提供不超过64KB内存供应用代码使用,另外提供200KB给应用运行时使用。
路网络带宽窄,延迟时间长。
路用户界面有限(UI),输入设备(手机及其他无线设备没有普通键盘和鼠标)。
这些限制要求ArcIMS开发的J2ME客户端必须具有精妙的设计,以保证应用的完整无误,在该框架内运行并向用户提供多要素服务。
J2ME客户端和ArcIMS服务器之间的通讯
实现基于J2ME的ArcIMS客户端的关键是无线客户端和服务器之间的通讯。ArcIMS有一个非常强大的基于XML的通信协议ArcXML。但不幸的是,J2ME设备通常没有足够动力和内存处理XML通讯,这种协议也就成为开发J2ME客户端的阻碍。当前J2ME设备的XML解析器消耗了很多本可以用到应用本身的内存。此外,大尺寸的XML消息也是一个大缺点。
为克服这些问题,作者设计了MultiProtocol二进制协议,专门用于地图浏览器和服务器之间的通信。该协议通过定义一套可相互发送的消息实现客户端与服务器的通信。该协议包含以下消息:
路MapMessage——用于一定范围和图像大小的地图请求和包含地图的返回
路IdentifyMessage——用于一个给定坐标的要素识别请求和包括识别要素的返回
路MetadataServiceMessage——用于获取地图服务器上的可利用服务信息
MultiProtocol还可以包括许多其他的定义消息。目前完成的有FeaturemMessage,用来获取一定范围内的要素信息;CrossStreetMessage,用来获取街道交叉点的位置识别。消息之间也可以相互组合(例如,CrossStreetMessage可包括MapMessage)。
为最大限度地利用的通讯通道,作者还设计该协议能够在单一的请求中发送或返回一个或多个信息。举例来说,客户端可在单一的请求中发送MapMessage和FeatureMessage消息,地图服务器处理两个消息,并返回MapMessage消息的地图图像和FeatureMessage消息的可利用要素信息,这两个信息是同时返回。