前 言 读者对象 本书针对的是所有移动软件开发人员和企业决策人员。本书重点介绍端到端的架构模式、最佳实践、关键创新,以及实际设计方法。对于不同的读者,阅读本书的收获也不同: ● 管理人员和企业家:本书是移动企业应用程序和Java 2 Micro Edition(J2ME)的全面指南。讲述了功能、限制、通用的最佳实践,以及最新的移动Java技术的商业解决方案。本书帮助您决定对于企业来说,哪种移动Java简档和产品是最佳的。 ● 有经验的移动开发人员:本书略过了基本的MIDP API教程资料,直接讲述更高级的和更有用的主题。通过几个完整的示例应用程序,展示了移动企业应用程序中的通用架构模式和编码最佳实践。对于正在寻找专门解决方案(例如,消息传递、数据库、XML和安全性)的开发人员,有关主流的第三方J2ME工具和库的技术讨论是非常有用的。这些实际创新也可以作为遇到相似任务时,如何设计和实现自己的解决方案的主要例子。 ● 有经验的Java开发人员:对于有经验的Java企业开发人员(J2EE开发人员)来说,转移到移动程序开发将要利用现有的技术。本书详细讲述了熟悉的设计模式和最佳实践,并引导开发人员如何在移动应用程序中应用这些模式和实践。本书讨论了企业Java API(例如JDBC、Java servlet、JMS以及Java加密扩充)的轻量级移动版本。这些是关于如何出于移动性考虑向下扩充企业解决方案而又保留了核心功能的极好例子。通过特定于移动问题的一些注意点,本书提供了为现有企业基础结构添加移动性的最快途径。 阅读本书的先决条件 为了完全理解本书的技术内容,读者应该熟悉基本的Java 2 Micro Edition(J2ME)、移动信息设备简档(Mobile Information Device Profile,MIDP)API和开发工具。附录A提供了快速MIDP编程指导。 为了运行端到端的示例应用程序,读者需要为自己的Java应用服务器部署服务器端组件,并在桌面模拟器或真实设备上运行客户端组件。详细指导请参考工具的产品手册。 尽管服务器端的Java不是本书的重点,但熟悉基本的Java 2 Enterprise Edition(J2EE)的概念,例如servlet、Java DataBase Connectivity(JDBC)、Java Messaging Service(JMS)、Java XML处理和Enterprise JavaBean(EJB),将有助于理解本书的许多主题。 本书内容 本书共分为六个部分: 第Ⅰ部分是关于移动商务、移动企业应用程序,以及J2ME的入门性资料。讲述了J2ME的总体架构、当前状态,以及未来的路标。 第Ⅱ部分是本书的核心。用几个示例应用程序展示了智能客户移动应用程序范例、通用的架构模式和最佳实践。讲述了如何在PDA设备上运行容器管理的应用程序(如servlet),也介绍了J2ME客户系统的一种有用的高级HTTP客户程序库。 第Ⅲ部分讲述了移动消息传送。在移动领域里,消息传送客户程序易于使用,而且符合移动的生存期。在企业领域里,消息传送是创建有保证的服务质量(QoS)的松散耦合应用程序的最好方式。本书这一部分试图寻求这两个领域的最佳结合点。讲述了电子邮件和基于SMS的端到端应用程序以及企业移动消息传送服务器。 第Ⅳ部分讨论了移动数据库,它是偶发连接和基于同步的应用程序的核心。这一部分讲述了移动数据库的商业化和开放源代码创新、同步引擎,以及传统数据库连接。展示了来自PointBase的两个示例数据库应用程序。 第Ⅴ部分讲述了如何将移动客户程序集成到企业Web服务基础结构中。讨论了现有的和新兴的J2ME XML和SOAP工具包、规范,并展示了几个完整的示例应用程序。 第Ⅵ部分提供了完全的J2ME移动安全解决方案。本部分超越了简单的基于连接的端到端解决方案,例如HTTPS,还讲述了J2ME的开放源代码和商业化加密工具包。由于加密API的复杂性,提供了每一个重要工具包的API指南。 本书有两个附录。附录A使用一个简单的端到端的MIDP应用程序,说明了整个开发和部署周期。附录B介绍了IBM WebSphere Studio Device Developer IDE,并提供了关于如何在PocketPC设备上安装IBM J2ME运行库的指导,这些指导在文档中没有记录。 代码示例 本书使用完整的示例应用程序展示了设计模式、最佳实践和重要的API用法。因为本书讨论了范围广泛的技术、创新和应用场景,所以在单个例子里讲述的所有内容是不切实际的。作者开发了几个小型到中型的示例,每个示例集中于一个特定的主题。这种方法允许读者把学习任务分为几部分,每次可以阅读本书的一个部分。 本书的源代码通过易于领会的代码段来展示,这些代码段与文本讨论的内容相关。出于清晰的目的,通常从程序清单里故意省略了代码中的不必要部分(例如,异常处理、导入包)。因此,本书所给的程序清单对于理解概念是足够的,但不是可直接运行的代码。对于想要测试和运行代码的读者,完整的源代码包可以从本书的Web站点下载得到。本书使用的示例应用程序如下: ● iFeedBack:2002年NexTel/Motorola/Sun无线应用程序比赛的大奖获得者(第3章)。 ● Echo:GUI客户程序和运行在OSGi客户端容器里的服务(第4章)。 ● Pizza Order:包括在IBM Service Management Framework下载包里的一个示例。该示例展示了如何构建带有HTTP前端的智能客户(第4章)。 ● Smart Ticket:Sun Wireless Blueprint应用程序2.0版的早期发布代码(第5章)。 ● HttpClient:在本章中(第6章)开发的高级HTTP库的代码。 ● Mail:基于Mail4ME v1.0库的MIDP电子邮件客户程序(第8章)。 ● WMATester:展示Wireless Messaging API v1.0用法的简单消息传送应用程序(第9章)。 ● ContactManager:基于PointBase v4.5库的移动地址簿(第11章)。 ● ContactManagerSync:基于PointBase v4.5库的同步化移动地址簿(第13章)。 ● AmazonExample:使用kDOM和XmlPull API的用于Amazon Web服务的kXML客户程序(第15章)。 ● PeekAndPick:由Jonathan Knudsen开发的移动电话的RSS阅读器(第15章)。 ● Google:用于Google Web服务API的简单客户程序。kSOAP v1.2和v2.0版本均可用(第16章)。 ● SmartPhrases:集成的Google搜索和在线字典应用程序(第16章)。 ● MapPoint AxisFacade:用于MapPoint v3.0 Web服务的Apache Axis外观(第18章)。 ● MapPoint AxisClient:用于MapPoint外观的Personal Profile和MIDP客户程序(第18章)。 ● MobileSecurity:展示加密API正确用法的小型应用程序的集合(第20章)。 ● SimpleDemo:展示密钥概念和MIDP编程中的API的简单MIDP应用程序(附录A)。 商业产品 本书介绍并比较了来自12多个第三方供应商的30多个工具包和库。这些产品描述和API用法例子旨在为读者提供一个作出明智比较和决定的坚实技术平台。它们也可以作为API和工具设计的实际例子。但是,这些描述和例子不能代替供应商的正式产品文档。强烈鼓励有兴趣的读者从供应商处获得最新的评估软件包和文档,以进行进一步的研究。 相关出版物 本书用到的一些资料源自作者以前零星地发表在几个在线杂志上的文章。 ● 第5章中讨论的Sun Smart Ticket蓝图在“End-to-End J2ME Application Development by Example”一文讲述过,该文章于2003年6月发布在Sun Wireless Java Web站点。 ● 第9章的前半部分在“Mobile P2P messaging, Part 1”一文中讲述过,该文章于2002年12月发布在IBM developerWorks。 ● 第Ⅳ部分的例子改编自“High-availability mobile applications”,该文章于2003年6月发布在JavaWorld。 ● 第16章基于“Access Web services from wireless devices”,该文章于2002年8月发布在Java World。 ● 第18章的例子改编自“Let the mobile games begin, Part 2”,该文章于2003年5月发布在JavaWorld。 ● 第Ⅵ部分基于“Data security in mobile Java applications”,该文章于2002年12月发布在JavaWorld。 制作手记 本书由1GHz Apple PowerBook上的LATEXtypesetting系统制作,该机运行Mac OS X(其以前的版本曾经是最好的消费者操作系统)。使用Microsoft Word完成编辑和复审。图形是用Microsoft Visio、OmniGraffle、GIMP和ImageMagick工具制作的。 示例应用程序使用多种开发工具开发,包括VI、Jedit、IntelliJ IDEA和WebSphere Studio Device Developer IDE。使用Apache Ant创建应用程序。在许多供应商SDK上测试移动客户程序,这些SDK来自Sun Microsystems(J2ME Wireless ToolKit)、IBM(WebSphere Micro Environment)、Nokia和Motorola。真实设备测试是在Motorola i95cl、Nokia 7210、Nokia 6800和PocketPC Phone设备上进行的。 序 言 美国商务部于2003年8月发布了报告“信息技术劳动力的教育和培训”。该报告指出美国的公司会继续开发可以极大地提高生产率的创新,开发人员团体必须准备好利用这些创新。关键的问题是找出标志这些创新的技术、并将注意力放到那些可以获得收益的技术上。 企业移动性已经被认为是这样的一个非常有前途的技术,它可以对现有的IT解决方案进行扩充。这些扩充包括支持不同型式规格的设备(如PDA和智能电话)以及扩充的操作特性——如通过可能有长等待时间和分散的地理覆盖区域的低带宽网络进行的偶发连接上的操作。 当今,许多金融交易商、销售代理、工厂车间工程师、仓库管理员和保健教授在现场外面使用的解决方案仍然是基于钢笔和铅笔的解决方案,这是因为网络没有覆盖到,或者不能使用基于PC的型式规格,或者两者都不具备。业务的整体效率常常被这些“现场”瓶颈所限制。当更多的公司寻求移动性扩充以提高直接影响最终结果的效率时,那些在基于IT的解决方案的移动性扩充领域占得先机的开发人员在全球经济中将会有大量的就业机会。 最好的企业移动战略是“不重新发明轮子”,而是应该利用现有的基础设施、标准和开发人员的技能扩充出一个一致性架构,该架构将结合从强大的后台服务器到笔记本电脑到PDA到最小的智能手机的所有东西。 本书作者Michael Yuan与IBM的工程师以及许多其他的企业移动解决方案的供应商有过很多合作。本书是对当今企业移动前景的全面技术指导。它讲述了架构设计模式、最佳实践、和实际创新。详细讨论了重要的移动范例和架构,如智能客户机、端到端的托管服务、同步数据访问和基于内容的安全性。对本书我最欣赏的是它不仅讨论了一些架构的优缺点,而且还用示例应用程序引导读者完成了具体的解决方案。 一致性架构解决方案在基于开放标准时是最有价值的。这使解决方案集成者可以在对集成成本影响最小的情况下,从多家供应商中选择技术。本书是对多家供应商提供的众多实际创新的全面指南。没有偏见的技术性的讨论不仅可以让读者做出明智的选择,而且还展示了实践设计方法。 企业移动性是IT行业中最有前途和最前沿的领域。如果您是一名寻求更新自己的技能并提升自己在价值链中的位置的有经验的开发人员,那么我强力推荐这本书。 Jim Colson IBM杰出工程师 首席架构设计师,IBM 普及计算部, 德克萨斯州奥斯汀 2003年8月