Palm OS 编程简介
您正在考虑进行 Palm OS® 平台的编程吗?本页面为您介绍几类编程类型,汇总编写 Palm OS 应用程序的独特之处,以及在何处可以获得有关的更多信息。
应用程序类型
为 Palm Powered® 掌上电脑创建的解决方案可能包含几个不同的组件。在掌上电脑运行的应用程序可以由一个或多个应用程序 PRC 和定制的共享库组成。根据您的特定需求,可能还需要编写一个在桌面电脑上运行的同步管道。许多解决方案最终取决于特定的许可厂商设备的硬件附件。
掌上电脑应用程序
在 Palm Powered 掌上电脑运行的 GUI 应用程序一般都是单线程、事件驱动的程序。一次只能运行一个应用程序。用户不能停止或退出应用程序,他们只能选择运行另一个不同的应用程序。作为响应,Palm OS 停止当前的应用程序并运行新选择的程序。虽然 Palm OS 应用程序由事件驱动,但是它们仍然可能根据其它的系统要求执行事件循环之外的工作。例如,如果用户使用 Find(查找)工具在设备上搜索一个特定的单词,则系统运行每一个应用程序并搜索它们的数据库查看是否包含匹配的数据的记录。
Palm OS 应用程序被编译为 PRC 文件(Palm 资源文件)然后下载到掌上电脑。同一个 PRC 可以在所有 Palm 品牌的设备上运行,也可以在所有许可厂商设备(例如 Handspring、Symbol 或 Sony)上运行。一些设备具有可编码的特有功能。有关详细信息,请参见 Palm OS Programmer's Reference 中的附录 "Compatibility Guide"。
您可以使用各种不同的语言(如 C、C++、Visual BASIC 或 Java)的开发环境创建 Palm OS 应用程序。您还可以根据要使用的语言来选择一种开发环境,但是要清楚由选择引发的结果。使用标准 C 语言作为编程语言是最常用的开发环境,有一些附件的开发允许使用 C++ 框架。对於 C 或 C++ 应用程序,Palm OS 为应用程序提供了关于内存管理、字符操作、屏幕绘图等方面所需的大量函数。因此不需要链接标准 C 或 C++ 库。这将使您的应用程序简洁和高效。对於 Visual BASIC 和 Java 的开发环境,甚至一些基於 C 语言的开发环境都要求提供一个运行时引擎。其中一些开发环境要求在设备中提供引擎,而其它的则将运行时元素编译到应用程序中。不论哪种情况,最终产生的代码库都不如基於 C 语言的应用程序简洁。但是,运行引擎通常向用户免费提供,并且开发工具提供了足够多的好处,从而使代码长度的增加变得物有所值。
如果您选择 C 或 C++,则还需要 Palm 提供的免费 SDK。除了为 C 语言开发提供了必需的头文件之外,Palm OS SDK 还包括文档和大量有用的工具。
同步管道(Conduit)
同步管道是 HotSync® 技术的一个插件,当您按下掌上电脑托架或者调试解调器上的 HotSync 按钮时,它就会运行。同步管道负责同步桌面电脑和掌上电脑应用程序之间的数据。
如果只需要将数据备份到 PC,Palm HotSync 软件为您提供了一个基本的备份同步管道。在这种情况下,您需要做的只是在掌上电脑的数据库中设置一个二进制位,指明数据应该进行备份。不需要额外的同步管道。当必须转换数据格式时,同步管道就是必要的了。例如,当您将数据从掌上电脑转移到公司的数据库中时,必须有一个同步管道来执行转换工作、访问合适的数据库记录、向该记录写入数据、并保存到数据库。
同步管道的编写通常使用 Visual C++、Visual BASIC 或 Java 语言并结合 Palm 同步管道开发工具包 (CDK) 进行。与用于设备端应用程序开发的 SDK 非常相象,CDK 提供了对 Sync Manager API 的访问,以及一些有用的工具和文档。它还提供了一个包含许多同步逻辑的通用同步管道,可轻松对其进行定制以符合您的需要。
除了 CDK 之外,还可以使用许多第三方解决方案,它们有助于使同步管道开发过程自动化,或者提供了直接与服务器同步的能力。将掌上电脑应用程序与服务器同步的程序仍然称作同步管道,但是它们与用 CDK 构建的同步管道的不同之处在於它们不依靠 Sync Manager API。
专门为小型的、用电池操作的设备而设计
与设计用于高功率奔腾电脑的应用程序相比,为 Palm OS 设计应用程序需要一套完全不同的观念,前者拥有大尺寸的彩色显示器,其用户通常一次要坐下来工作几个小时。与之相反,Palm Powered 掌上电脑是低电压、小型的、用电池操作的设备,使用频繁但每次时间都不长。以下是在设计和构建应用程序时应该切记的一些注意事项:
· 屏幕大小:大部分 Palm Powered 掌上电脑的屏幕为 160x160 像素,这限制了一次可以显示的信息量。桌面应用程序经常在按钮栏提供许多选项。在 Palm Powered 掌上电脑中,主屏幕应该只包含人们最需要的信息,其它无关内容一概去除。将任何额外的功能隐藏在子屏幕中。
· 使用模式:Palm Powered 掌上电脑的典型使用模式是每日多次使用,每次使用时间很短。对於掌上电脑来说,日开机 40 次,累计使用时间 1 小时并不少见。不要将掌上电脑当作一个小型的笔记本电脑,而应该使您的应用程序在这些短暂的用户活动中发挥出最大作用。切记:当用户要在桌面电脑前坐下工作 3 个小时的情况下,要求他们在找到所需的信息前多等 30 秒通常是可以原谅的。但对於掌上电脑用户来说,如果查找信息只是关机之前唯一要做的事,那么,这种等待是无法忍受的。
· 有限的输入:不要让用户使用掌上电脑本身输入许多数据。屏幕上的手写笔画输入以及内置键盘对话框远不如桌面电脑的键盘和鼠标效率高。用户可以使用外接键盘,但是不应该把它们当成必需的设备。考虑为用户提供一个在桌面电脑输入数据的方法,然后提供一个同步管道将这些信息下载到掌上电脑。
· 功率:Palm Powered 掌上电脑的处理速度范围是从 16MHz 到 33MHz。它们并非设计用于执行与桌面 PC 相同类型的处理。掌上电脑的用户不希望一边盯着沙漏图标一边等着下一屏幕的出现。考虑使用同步管道将任何复杂的处理移交给具有更大功率的桌面电脑,而将设备端的应用程序限制为处理那些用户在离开他们的办公桌时需要的信息和工具。
· 电池:掌上电脑的电池相对较小,然而这个平台成功的关键之一在於该设备出色的电池使用寿命,在许多情况下都能超过一个月。这样,一台掌上电脑就更像一部好手机而不是一台笔记本电脑。用户无需担心他们的设备是否充电,只要能够使用该设备就可以了。在执行消耗大量功率的任务(例如串行或红外通信、声音、持久的动画或者其它需要长时间使用 CPU 的任务)之前,仔细考虑您的操作。
· 内存:每个 Palm Powered 掌上电脑的存储空间都很有限,从 512K 到 8MB 不等,还有一个 32K 到 256K 的动态堆(较新的设备往往分别有 8MB 和 256K)。优化是至关重要的。首先优化堆空间,其次是速度,最后是代码长度。
· 数据存储:Palm OS 将数据存储在称为记录的内存块中,它们被分组存储在数据库中,以便最充分利用有限的存储空间。一个数据库与一个文件类似,但是将数据库分割为许多记录就允许将数据存储在非连续的内存块中。为了节省空间,您应该在适当的存储堆中编辑数据,而不是先创建数据或将其缓存在 RAM 中,然后再写入到存储堆。
· 向后兼容性:向后兼容性是 Palm OS 的关键特性之一,因为用户不会像升级桌面电脑的操作系统那样频繁地升级掌上电脑的操作系统。即使您想创建在较旧的掌上电脑上(如 Palm Professionals)运行的程序,您也总可以使用最新版本的SDK。
· 计算每一个字节:在编写 Web 剪存应用程序时,要考虑 wireless.palm.net 服务计划的字节数很有限,从每月 50K 到每月 300K 不等。要限制用户传输的信息量。将您所需要的 HTML 页面和图像尽可能存储在设备中──方法是将它们包含在用户安装的 WCA 中。
其它介绍信息
随 SDK 一起提供的 Palm OS Programmer’s Companion,Volume I,更深入地介绍了 GUI 应用程序的设计原理。阅读前四章,以打下良好的基础并了解编写 Palm OS 应用程序涉及的内容。如果您准备创建 web 剪存应用程序,可以阅读 Web Clipping Developer’s Guide。
对於同步管道,随 CDK 一起提供的 Conduit Programmer’s Companion for Windows 和 Conduit Programmer’s Companion for Macintosh 提供了用于创建同步管道的类似信息。
还有许多第三方书籍供初级 Palm OS 程序员和更高级的 Palm OS 程序员使用。下面是两本非常重要的参考书目:
Palm OS Programming:The Developer’s Guide,2nd Edition,作者:Neil Rhodes 和 Julie McKeehan。本书为有经验的 C 和 C++ 程序员展示如何从头开始构建一个 Palm 应用程序。本书在第一版成功的基础上,加入了对更多版本 Palm OS(包括最新的 4.0 版)的应用程序构建的阐述。
Palm OS Programming Bible,作者:Lonnon R. Foster。这是一本非常全面的 Palm 编程参考书目,专门为 Palm OS 3.5 版编写。它涵盖了 GUI 应用程序编程、web 剪存应用程序和同步管道。该书以非常模块化的方式编写,使您能轻松阅读需要的部分。
如果您想参加学习班,开发人员培训计划提供了由教师指导的关于 Palm OS 基础、创建同步管道等内容的课程,还提供了针对初学者和有经验的 Palm OS 程序员的各种在线课程。由教师指导的课程透彻而富于实践,将讲座和实验相结合,教师会关注每个学生的实际情况并且授课教师均经过 PalmSource Inc. 的认证。
在完成基础内容学习之后,如果您有更多具体问题需要解答,那么有多个方法供您选择。您可以搜索开发人员知识库或者将问题发布到某个开发人员论坛(邮件列表和新闻组)上。此外,HotDispatch 提供了一个类似拍卖风格的论坛,在此您可以通过付费的方式获得个人问题的解答,而 PalmSource 也提供基於付费的编程支持。另外,可以转到 PalmOS.com 上的开发支持页面,获取更完整的支持选项列表。
最后,有关第三方开发环境的更多信息,请浏览第三方公司的网站以获取最有用的信息。但是,您可以浏览 PalmOS.com 的综合工具页面,获取第三方工具列表。该页面提供了到详细信息站点的链接。