在不可靠的无线网络中应用程序可靠性已经成为关系移动商业成功的一个中心话题。J2ME(Java 2 平台微型版)是支持离线模式智能移动客户端的完美平台。整合了移动关系数据库的企业J2ME客户端能够管理在设备上的复杂数据并能在需要时和后台服务器同步。
在这篇文章中,Michael Yuan首先他讨论了高可靠性移动移用应用程序的“偶然连接”(oclearcase/" target="_blank" >ccasionally-connected)范例。他在这个范例中解释了移动数据库的作用。他还用一个J2ME应用程序阐述了移动数据库应用程序的关键组件。最后,他评论了主流的J2ME数据库公司,为你在购买所需要的数据库时提供一个指导。
目前的无线网络是极不可靠的。不可靠的应用程序毁坏了移动商业的核心价值,而它又许诺无论何时何地都可以访问到信息。实际上,总是保持连接的需求正是基于无线应用协议(WAP)的瘦客户移动商业失败的主要原因。移动商业需要智能的移用客户端,它能够操纵当地的应用程序并且甚至在网络出现临时的不可靠时可以持续的工作(例如,离线操作)。“偶然连接”移动应用程序需要高级的移动数据储存和管理工具。这样的工具在J2ME上是容易得到的。
在这篇文章中,我首先讨论了移动数据库的一般概念和规范。我用了一个应用程序例子来阐述J2ME移动数据库应用程序的重要设计和关键组件。我也对现在变化的市场如何正确选择正确的移动数据库提供了建议。
设备上的数据存储和管理
对离线操作的首要需求是存储和管理设备自身的应用数据。标准的J2ME仅仅提供有限的数据存储和管理能力。在低端的MIDP(移动信息设备描述)电话上,我们仅靠记录管理系统record management system(RMS)得到线性的记录储存;在基础描述里(或PersonalJava)我们有简单的随机文件。应用程序开发者们必须用那些一般工具来组织数据,这些工具会对大应用程序导致乏味、低效率和错误的倾向。
在J2SE(Java2平台标准版)和J2EE(Java2平台企业版)的世界中,关系数据库代表着数据管理的关键技术。大多数开发人员已经非常熟悉通过如JDBC(Java数据库连接)的API访问普通数据库。因此轻量级关系数据库是我们对移动数据管理自然的选择。
除了提供离线操作模式外,设备上数据库on-device databases还有其他的重要好处:
他们能管理用户参数。极度的个性化已经作为移动商业的一个主要优点被吹捧。
他们能提供一个性能高速缓存器performance cache来减少网络往返回调。这样就能大大的增强在目前低速和反应慢的无线网络中应用程序的性能。
JDBC可选包
标准JDBC API对高端Java移动设备已经是可以选择利用了。PersonalJava运行时常常和可选的JDBC1.x API捆绑在一起。PersonalJava的继承物,J2ME 基础/个性化的描述Foundation/Personal Profile(FP/PP),它没有委托JDBC来访问数据库。相反,FP/PP设备通过J2ME JDBC可选包(JDBC OP)使用JDBC 3.x API 的一个富子集。JSR Java Specification Request(Java 规范需求)169正在发展这个可选包的规范,它的草案已在2002年11月提交上去。JDBC OP除了以下几个特点外支持大多数用于JDBC的公共特性:
连接池
ParameterMetaData接口
在CallableStatement interface里为已经存储的程序通过名称来设置参数
SQL 99的类型(如Struct,Array,Ref,SQLData,SQLInput,和SQLOutput接口 )
自定义类型映射(如setTypeMap() 和getTypeMap() 方法)
数据同步
偶然连接应用程序范例的另一个重要特性是数据同步。独立的移动数据库被数据包所隔开。当我们用强大的后台服务器连接那些“孤岛”时移动应用程序非常有用。已连接上的移动数据库有如下优点:
移动客户端常常需要访问企业的基础设施。例如,移动销售应用程序需要更新库存数据。
后端应用程序需要上卷数据和聚集数据来制定智能商业决策或生成正确的报表。例如,供应链应用程序在决定它应该从供应商那里定购多少货物之前需要得到移动销售人员的聚集数据。
后台能共享每个移动终端信息
因此智能客户端不但应该提供离线设备数据管理,而且应该当网络可用时提供后台数据库的数据同步。后台数据库当作简单移动设备管理的一个内容储存库是同步解决方案的额外收益。
理论上应用程序开发者能操纵整个同步逻辑,然而开发一个优化的,安全的和可扩展的同步解决方案需要非常专业的技能。移动数据库产品同其附带的同步工具和API一起赶走了开发人员的痛苦。
什么是SyncML?
SyncML是一个流行的应用层同步协议。除了包括像J2ME这样的通用客户应用平台,移动设备通常还预装一些智能应用程序。例如在智能电话或PDA上包括有日历,地址本和联系表(个人信息管理 personal information management, 或PIM应用程序)这些应用程序通常能够通过设备软件供应商所提供的协议与桌面PC或其他中央数据储存库进行数据同步。协议间的不兼容造成用户的许多问题。例如,在Pocket PC上的Mac 和Linux两平台进行同步是非常困难的;如果一个人拥有多个移动设备,那他必须安装多个驱动程序,而这些驱动程序是存在潜在冲突的。用户需要一个标准的同步协议,它允许任何设备在不需要专门驱动程序条件下与任何后端应用程序进行同步。
SyncML是一个标准的XML数据格式,它定义语法描述简单PIM数据例如vCard和vCalendar。SyncML能访问数据库驱动的企业后端信息系统。例如,IBM WebSphere Everyplace Access提供SyncML客户端访问Lotus Notes和Microsoft Exchange servers。像IBM DB2和Oracle9i Database这样重要的企业数据库已经建立了对SyncML的支持。由于SyncML只是在PIM类型应用程序上发挥作用,它还没有强大到足以和通用关系数据库同步的地步,因此本文没有集中在SyncML上。