高可靠性移动应用程序-移动数据库和J2ME工具(一)
来源:qqread 作者: 出处:综艺读书 2007-03-20翻译作者:jungleguo 2003-11-15
原文:http://www.javaworld.com/javaworld/jw-06-2003/jw-0606-wireless-p1.html
摘要
|
|
|||
目前的无线网络是极不可靠的。不可靠的应用程序毁坏了移动商业的核心价值,而它又许诺无论何时何地都可以访问到信息。实际上,总是保持连接的需求正是基于无线应用协议(WAP)的瘦客户移动商业失败的主要原因。移动商业需要智能的移用客户端,它能够操纵当地的应用程序并且甚至在网络出现临时的不可靠时可以持续的工作(例如,离线操作)。“偶然连接”移动应用程序需要高级的移动数据储存和管理工具。这样的工具在J2ME上是容易得到的。
在这篇文章中,我首先讨论了移动数据库的一般概念和规范。我用了一个应用程序例子来阐述J2ME移动数据库应用程序的重要设计和关键组件。我也对现在变化的市场如何正确选择正确的移动数据库提供了建议。
设备上的数据存储和管理
对离线操作的首要需求是存储和管理设备自身的应用数据。标准的J2ME仅仅提供有限的数据存储和管理能力。在低端的MIDP(移动信息设备描述)电话上,我们仅靠记录管理系统record management system(RMS)得到线性的记录储存;在基础描述里(或PersonalJava)我们有简单的随机文件。应用程序开发者们必须用那些一般工具来组织数据,这些工具会对大应用程序导致乏味、低效率和错误的倾向。
在J2SE(Java2平台标准版)和J2EE(Java2平台企业版)的世界中,关系数据库代表着数据管理的关键技术。大多数开发人员已经非常熟悉通过如JDBC(Java数据库连接)的API访问普通数据库。因此轻量级关系数据库是我们对移动数据管理自然的选择。
除了提供离线操作模式外,设备上数据库on-device databases还有其他的重要好处:
l 他们能管理用户参数。极度的个性化已经作为移动商业的一个主要优点被吹捧。
l 他们能提供一个性能高速缓存器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的公共特性:
l 连接池
l ParameterMetaData接口
l 在CallableStatement interface里为已经存储的程序通过名称来设置参数
l SQL 99的类型(如Struct,Array,Ref,SQLData,SQLInput,和SQLOutput接口 )
l 自定义类型映射(如setTypeMap() 和getTypeMap() 方法)
数据同步
偶然连接应用程序范例的另一个重要特性是数据同步。独立的移动数据库被数据包所隔开。当我们用强大的后台服务器连接那些“孤岛”时移动应用程序非常有用。已连接上的移动数据库有如下优点:
l 移动客户端常常需要访问企业的基础设施。例如,移动销售应用程序需要更新库存数据。
l 后端应用程序需要上卷数据和聚集数据来制定智能商业决策或生成正确的报表。例如,供应链应用程序在决定它应该从供应商那里定购多少货物之前需要得到移动销售人员的聚集数据。
l 后台能共享每个移动终端信息
因此智能客户端不但应该提供离线设备数据管理,而且应该当网络可用时提供后台数据库的数据同步。后台数据库当作简单移动设备管理的一个内容储存库是同步解决方案的额外收益。
理论上应用程序开发者能操纵整个同步逻辑,然而开发一个优化的,安全的和可扩展的同步解决方案需要非常专业的技能。移动数据库产品同其附带的同步工具和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上。
resources
· Download the source code for this article's PointBase ContactManager sample application (you need to download PointBase Micro database and UniSync to run the sample):
http://www.javaworld.com/javaworld/jw-06-2003/wireless/jw-0606-wireless.zip
· For more detailed discussion and complete source code analysis, preview Michael Yuan's upcoming book, Java Mobile Enterprise Application Development:
http://www.enterprisej2me.com/books.php
· The JDBC specification:
http://java.sun.com/products/jdbc/
· The JDBC optional package:
http://java.sun.com/products/jdbc/download.html/#cdcfp
· The supported JDBC API in PersonalJava:
http://java.sun.com/products/personaljava/
· HSQL Database Engine (check out the Sharp Zaurus page):
http://hsqldb.sourceforge.net/
· Sybase iAnywhere Solution's SQL Anywhere Studio (including Adaptive Server Anywhere and UltraLite deployment option):
http://www.sybase.com/products/mobilewireless/anywhere
· IBM DB2 Everyplace:
http://www-3.ibm.com/software/data/db2/everyplace/
· Oracle9i Lite database:
http://otn.oracle.com/products/lite/content.html
· PointBase Micro database and UniSync server:
http://www.pointbase.com/home.shtml
· For more articles on J2ME and wireless development, browse the Micro Java section of JavaWorld's Topical Index:
http://www.javaworld.com/channel_content/jw-micro-index.shtml
· More Wireless Java articles:
http://www.javaworld.com/columns/jw-wireless-index.shtml
· Browse the Java Database Connectivity (JDBC) section of JavaWorld's Topical Index:
http://www.javaworld.com/channel_content/jw-jdbc-index.shtml
· Michael Yuan also authored the following JavaWorld articles:
o "Build Database-Powered Mobile Applications on the Java Platform" (January 2002)
o "Track Wireless Sessions with J2ME/MIDP" (April 2002)
o "Java Tip 126: Prepare Cross-Server Database Access Methods with JDBC" (April 2002)
· Browse the Development Tools section of JavaWorld's Topical Index:
http://www.javaworld.com/channel_content/jw-tools-index.shtml
· Browse JavaWorld's Product Reviews index page:
http://www.javaworld.com/news-reviews/jw-nr-product-reviews.shtml
· Sign up for JavaWorld's free weekly Micro Java email newsletter:
http://www.javaworld.com/subscribe
相关图文阅读
频道图文推荐
相关专题
·J2ME开发教程 (552篇文章)
·J2ME游戏开发应用 (600篇文章)
·数据库专栏 (4452篇文章)
·数据库处理专题 (7194篇文章)
·城域网专题 (6645篇文章)
·数据库安全技术专题 (10947篇文章)
·数据库安装与卸载 (8906篇文章)
·电信运营商专栏 (2228篇文章)
·Linux数据库宝典 (11116篇文章)
·MIDP平台应用 (73篇文章)
·J2ME游戏开发应用 (600篇文章)
·数据库专栏 (4452篇文章)
·数据库处理专题 (7194篇文章)
·城域网专题 (6645篇文章)
·数据库安全技术专题 (10947篇文章)
·数据库安装与卸载 (8906篇文章)
·电信运营商专栏 (2228篇文章)
·Linux数据库宝典 (11116篇文章)
·MIDP平台应用 (73篇文章)
·J2ME专业手机游戏开发基础 (0次浏览)
·集成技术:.NET单挑J2EE (0次浏览)
·集成Eclipse、Lomboz和JBoss开发J2EE应用 (0次浏览)
·经验交流:学习J2EE流程中的经验和教训 (0次浏览)
·淡入淡出式显示Swing容器组件 (0次浏览)
·集成技术:.NET单挑J2EE (0次浏览)
·集成Eclipse、Lomboz和JBoss开发J2EE应用 (0次浏览)
·经验交流:学习J2EE流程中的经验和教训 (0次浏览)
·淡入淡出式显示Swing容器组件 (0次浏览)
·如何开发基于JBoss的J2EE应用 (12次浏览)
·J2ME专业手机游戏开发基础 (0次浏览)
·集成技术:.NET单挑J2EE (0次浏览)
·集成Eclipse、Lomboz和JBoss开发J2EE应用 (0次浏览)
·经验交流:学习J2EE流程中的经验和教训 (0次浏览)
·淡入淡出式显示Swing容器组件 (0次浏览)
·J2ME专业手机游戏开发基础 (0次浏览)
·集成技术:.NET单挑J2EE (0次浏览)
·集成Eclipse、Lomboz和JBoss开发J2EE应用 (0次浏览)
·经验交流:学习J2EE流程中的经验和教训 (0次浏览)
·淡入淡出式显示Swing容器组件 (0次浏览)
·用J2ME实现低级界面中文输入法 (136次浏览)
·对于Struts和Spring两种MVC框架的比较 (106次浏览)
·Java IDE实用对比:Eclipse、NetBeans、Intel (93次浏览)
·我的j2me创意--Wap浏览器的源代码 (76次浏览)
·DoJa平台手机游戏的开发与移植 (67次浏览)
·J2ME中读取Unicode和UTF-8编码文件 (59次浏览)
·j2me创意--Wap浏览器的源代码 (53次浏览)
·IIS+Resin集成多个站点和数据库连接池 (50次浏览)
·GT4 开发:从头开始进行相互的身份验证 (46次浏览)
·J2ME应用程序架构模型 (44次浏览)
·对于Struts和Spring两种MVC框架的比较 (106次浏览)
·Java IDE实用对比:Eclipse、NetBeans、Intel (93次浏览)
·我的j2me创意--Wap浏览器的源代码 (76次浏览)
·DoJa平台手机游戏的开发与移植 (67次浏览)
·J2ME中读取Unicode和UTF-8编码文件 (59次浏览)
·j2me创意--Wap浏览器的源代码 (53次浏览)
·IIS+Resin集成多个站点和数据库连接池 (50次浏览)
·GT4 开发:从头开始进行相互的身份验证 (46次浏览)
·J2ME应用程序架构模型 (44次浏览)
最新技术文档
·J2ME专业手机游戏开发基础 06-27
·集成技术:.NET单挑J2EE 06-27
·集成Eclipse、Lomboz和JBoss开发J2EE应用 06-25
·经验交流:学习J2EE流程中的经验和教训 06-21
·淡入淡出式显示Swing容器组件 06-19
·如何开发基于JBoss的J2EE应用 06-06
·初学j2me必读 网友学习笔记 05-29
·对于Struts和Spring两种MVC框架的比较 05-27
·Session机制使用的详细讲解 05-27
·使用Java NIO提高服务端程序的性能 05-27
·集成技术:.NET单挑J2EE 06-27
·集成Eclipse、Lomboz和JBoss开发J2EE应用 06-25
·经验交流:学习J2EE流程中的经验和教训 06-21
·淡入淡出式显示Swing容器组件 06-19
·如何开发基于JBoss的J2EE应用 06-06
·初学j2me必读 网友学习笔记 05-29
·对于Struts和Spring两种MVC框架的比较 05-27
·Session机制使用的详细讲解 05-27
·使用Java NIO提高服务端程序的性能 05-27
站内各频道最新更新文档
站内最新制作专题
|
|||
| ·ACDSEE专题教程-下载使用 ·迅雷专题教程-下载使用 ·Windows XP频道 ·Windows Vista频道 ·Windows 2000频道 ·win2003频道 ·Freebsd频道 ·Oracle频道 |
·Linux频道 ·Windows频道 ·邮件服务器专题 ·协议大全 ·数据恢复指南教程 ·FreeBSD使用教程 ·Linux数据库宝典 ·Linux基础知识 |
||
热门关键字导读
站内频道文章精选
| · 秘密:Vista隐蔽的动态屏保 · 腾讯开发新电子宠物--QQ熊 · 惠普否认2999元PC有价无货 |
· 驱逐Win系统“流氓”文件 · WinXP中获取未使用的IP地址 · 尝试format C:格式化硬盘? |
| · 在DOS下恢复回收站中的文件 · 拯救WinXP崩溃的救命稻草 · Linux系统中超级权限的应用 |
· 搜狗PK谷歌:谁能代言拼... · 昨日重现,一键GHOST轻松.. · 实现Web迅雷在空闲时杀毒 |
| · AVIFile函数制做AVI文件 · VC中链接动态链接库的方法 · 熊猫烧香核心源码(Delphi) |
· DateDiff函数祥解 · JavaScript去除空格的三种 · js效果 图片加载进度实时.. |
| · SQL Server数据库优化方案 · Oracle的初学者入门心得 · JSP连接Mysql数据库 |
· Photoshop为美女做艺术处理 · 用Freehand创建发光字特效 · 设计自己的个性QQ动态表情 |
百度推荐,商机无限
搜索您感兴趣的内容




