订单查询 购书指南 购物车 收藏  
    首页 热点专题 精确搜索 精品推荐 俱乐部论坛 下载服务 走近科海 征稿专栏 新书预告 各地经销商 特价直销

《J2ME开发大全》
第4章J2ME最佳实践和设计模式

为小型计算设备设计应用程序是一种挑战,首先是因为这些设备上的资源有限。您必须假设小型计算设备含有很少的内存和永久数据的存储空间,关于这一点我们已经在前两章中讨论过了。

很多传统的系统设计方法和实践原则都不适合用于构造运行在小型计算设备上的应用程序。这意味着您必须重新思考设计专门用于小型计算设备的应用程序的方法。幸运的是,您可以在自己的设计中融合一些最佳实践和设计模式,从而克服小型计算设备内在的很多限制。在本章中,将学习开发J2ME应用程序的最佳实践和设计模式。

4.1 在J2ME世界中工作的现实

小型计算设备的硬件配置与传统计算设备(如桌面计算机和服务器)有着根本的不同。因此在设计J2ME应用程序时必须考虑设备的硬件配置。例如,考虑传统计算设备和小型计算设备在如下方面的区别:

传统计算设备使用来自电网的持续的电力供应,而小型计算设备(例如移动电话)依靠电池供电,因此减少了正常操作的时间。而其他一些小型计算设备(诸如机顶盒和家用电器)也是用电网供电的。

传统计算设备和小型计算设备之间的另一个重要区别是网络连接。与传统计算设备不同,移动小型计算设备通过无线电或红外线连接到网络上,这种网络连接的质量取决于设备与网络接收器之间的距离,以及设备发出的信号的强度。一些非移动的小型计算设备,例如机顶盒,也使用与传统计算设备类似的硬连线的网络连接。网络连接的不稳定性和电力供应的时间限制,通常要求小型计算设备的用户经常与桌面计算机或服务器同步数据和应用程序。

在第1章中我们已经看到,程序和数据存储在小型计算设备的内存中(通常称为主存储)。当设备失去电力时,这些信息就会丢失,尽管一些设备提供辅助电池,可以尽量长时间保存信息。一旦丢失之后,程序和数据必须重新装载到设备中去。辅助存储通常在小型计算设备上是不使用的。因此,J2ME应用程序应该依赖于离线存储在桌面计算机或服务器中的数据,而不是存储在设备的主存储中的数据。使用网络连接可以将离线存储的数据重新装载到设备中去。

不要期望移动小型计算设备能够以与硬连接网络中的设备相同的速度传输和接收数据。与硬连线的网络连接相比,移动小型计算设备和传统计算设备之间的数据传输是很慢的,因为无线电和红外技术能提供的传输带宽比硬连线的网络连接小。带宽是指能够同时传输数据的通信通道的数目。

用户会期望您的应用程序能够与桌面计算机应用程序有同样的表现。因此,您必须设计您的J2ME应用程序,尽量减少和优化与离线数据源之间的数据传输。一种优化J2ME应用程序的运行速度的方法称为ROMizing。ROMizing在应用程序部署到小型计算设备上之前进行,它创建应用程序的机器代码镜像,从而可以加快程序的运行。与此类似,J2SE和J2ME应用程序使用即时(just-in-time)编译器,或JVM虚拟机采用的其他技术来进行优化。

4.2 最佳实践

随着时间的流逝,经过不断尝试,J2ME开发人员提出了解决复杂J2ME程序设计问题的最佳方法。这些技术称为最佳实践和设计模式。最佳实践是经过实践验证明用来构建J2ME系统的设计和编程技术。设计模式是用来解决这些系统中常见程序设计问题的例程。

专业的开发人员使用最佳实践和设计模式来避免在设计和制作J2ME应用程序时犯下常见的错误。通过在设计J2ME应用程序时融合正确的最佳实践和模式,您可以从专业J2ME应用程序的开发经历中获益。在下面的几小节中,您将学习这些最佳实践和模式。

4.2.1 应用程序越简单越好

在为小型计算设备开发应用程序时,您必须采用新的思想,因为资源有限,并且不能轻易地扩展资源以满足应用程序的需求。通常,应用程序的设计是将它分为多个对象、有关联的数据和方法。我们使用订单作为例子。订单对象应该具有订单编号、客户编号、产品编号和有关的数据。类似的,订单还具有一些相关的功能,例如插入新订单、修改现有订单和删除订单。订单有一个或多个菜单项让用户浏览订单。

设计J2ME应用程序时,同样是将它分为小的组件。但是,J2ME应用程序的划分比典型应用程序的划分要更为精细。例如,J2ME应用程序的一个常见组件是一个菜单项,而不是一个对象的菜单方法或一个菜单对象。每个菜单项都是它自己的MIDlet。菜单项MIDlet与应用程序的其他MIDlet一起打包在同一个MIDlet包中。

J2ME设备的应用程序管理器将每个MIDlet(菜单项)显示在设备的菜单中,这种方式减少了运行应用程序自己的菜单通常所需的处理资源,如图4.1所示。

最佳实践是保持您的应用程序设计尽量简单。限制您的设计,用最少的功能来满足用户的需求。尽可能将每个功能组件制作成MIDlet,将应用程序的多个MIDlet包装在一个MIDlet包中。这使设备的应用程序管理器可以管理MIDlet和MIDlet使用的资源。

4.2.2 应用程序越小越好

J2ME应用程序的大小对有效部署应用程序来说是很关键的。最佳实践是删除应用程序中不必要的组件,以减小整个应用程序的体积。很多桌面应用程序花哨的界面同样也会增加应用程序的体积。虽然精致的应用程序能够在桌面计算机上工作正常,但它们却难以适应小型计算设备。

图4.1 将每个菜单项做成MIDlet,让应用程序菜单显示每个菜单项

J2ME应用程序的用户期望应用程序能够快速下载到小型计算设备上,并且与设备上的应用程序一同运行。越小的应用程序越能更好满足这种要求,因为需要下载和存储在设备内存中的字节数都更少。

除了删除J2ME应用程序中的声音和其他不必要的功能之外,您还应该将您的应用程序部署为JAR文件。前面的章节中已经介绍过,JAR文件是J2ME应用程序经过压缩后的版本,体积更小。

有时,您会发现即使简化后的应用程序版本也需要很长时间才能下载,或者由于体积太大而不能在小型计算设备上运行。在这种情况下,需要将您的应用程序划分为多个MIDlet,然后根据前一章的介绍,将MIDlet包装在一个MIDlet包中。

专题首页 下一页