The Palm Computing Platform - An Overview
Years from now, we may look back on the introduction of the Palm Pilot as the "killer application" for mobile computing that
got the ball rolling. While many devices had previously tried and failed (the Apple Newton being the most notable example),
the Palm Computing Platform, originally introduced by Palm Computing (since purchased by U. S. Robotics and now controlled by 3Com), has succeeded undoubtedly
beyond its creators' wildest imaginations. Depending on which market estimate you read, devices running the Palm OS dominate
the handheld world, garnering over 70% market share for handheld devices and over 80 percent market share for palm-sized
devices. As wireless data access was added with Palm OS 3.2 and the introduction
of the Palm VII organizer, it has become clear that Palm Computing is here to stay and will be one of the leaders of the
coming wireless revolution.
The initial Palm Computing device (the Pilot 1000) was introduced in 1996. A steady stream of upgrades led to the introduction
of the Palm III in 1998. This device was the most successful of the Palm OS devices and is currently the "entry-level" Palm
device today. The Palm V followed the III with a slightly slimmer metallic case that used rechargeable batteries. The Palm
VII (released in 1999) was the first mass-market handheld device to include wireless communications capabilities (using the
Palm.Net service). The Palm OS has since been licensed by leading manufacturers such as IBM, Sony, and Nokia for potential usage in
a wide range of applications and the licensee list continues to grow. Clearly, the Palm OS is currently the leading platform
if you're interested in developing commercial applications for the widest range of users.
The Palm OS has succeeded where so many have failed for a number of reasons, perhaps the leading reason being its simplicity.
Instead of trying to be all things to all people, the Palm designers seemingly focused on doing a few things, but doing them
well. There is no keyboard device, no color screen (at least not in the original devices!), no full-text character
recognition, and no high-powered processor. It is even ridiculously simple to synchronize data with your PC: simply drop the
Palm device onto its cradle and hit one button...installed software does the rest of the work for you. The Palm API is
relatively straightforward and is C language based, which opens it up to the widest variety of development options. Finally,
the devices are inexpensive (and getting cheaper by the day) and enjoyable to use. Handwriting recognition is included
through the Graffiti recognition keystrokes which take only a matter of minutes to learn.
The Palm OS graphical user interface makes use of a number of common UI metaphors including menus, buttons, checkboxes,
bitmaps, fields, gadgets, labels, and scrollbars (see Figure 1). The user interacts with this GUI using a pen (known as a stylus) by selecting
widgets on the screen (such as buttons).
Figure 1 - The Palm OS Applications Screen
Text entry is accomplished via a graphical keyboard or through the built-in
Graffiti character recognition system. While text entry can be accomplished rather quickly once you've learned the basics,
it is important to remember that is always easier for the user to select items with the stylus than to manually enter text.
If you have any event-driven programming experience (on platforms such as MacOS, Windows, Motif, or Java), you will be familiar with the event-loop paradigm used by the Palm OS.
The Palm OS provides the ability for applications to permanently store data in memory on the storage heap. A portion of the
Palm OS known as the Data Manager manages databases, which can be stored in one of two formats: as a resource or as
a record. Note that the Palm OS does not support standard file-based access to data; instead all data is stored within objects
known as databases and individuals records or resources can be retrieved from a database one item at a time. Databases
are associated with a creator ID, which can be obtained by registering at the Palm Computing Developer Zone.
Palm database programming will be covered in tutorials within this section and on regular articles at this site so check back regularly.
The Palm OS and its underlying hardware support three modes of operations: sleep mode, doze mode, and running mode. In sleep mode,
the device appears to be off although the real-time clock and interrupt generation circuitry are still running. Sleep mode is entered
when the device remains inactive for a pre-defined time or when the user presses the Off button. In doze mode, the system appears to be
on (the display remains active and the processor's clock is running), however no instructions are being processed. The device
is continually in this mode while it is on as long as it has no user input to process. Running mode is entered when their
is a user event to process. The device reenters doze mode immediately after processing the final event. System API calls
allow applications to enter doze mode as well as determine current time-out values and battery levels.
One of the keys to the success of the Palm (and handheld devices in general) is the ability to quickly and painlessly synchronize
data from the handheld device to the desktop (and vice versa). The Palm OS accomplishes this via an innovative client/server
architecture with the client being the handheld device and the server (known as a conduit) existing as a dynamic link library (DLL)
on the user's desktop. A conduit development tutorial will appear in this section at a later date.
Serial communication via the Palm serial port allows the device to communicate with a wide range of compatible devices including
PCs, modems, barcode scanners, and GPS units. Serial communications are controlled by the Serial Manager portion of the Palm OS. The
Palm OS API allows developers to open serial connections, send and receive data, then close connections through standard
function calls. A new Serial Manager (imaginatively titled the "New Serial Manager"!) supports multiple serial connections
within a single Palm device. This became necessary as Palm devices added multiple serial devices (such as the IR device).
Infrared Communications, more commonly referred to as "Beaming", allows devices to interchange data via an IR device onboard
newer Palm organizers (Palm III and later). These data exchanges take place using the IrDA standard (see the Infrared Data Association
for more information). A portion of the Palm OS known as the Exchange Manager controls IR communications
and an API is provided that offers developers a standard set of functions for opening infrared connections and transferring data
Network Communications are made possible via two APIs: the Net Library and the Internet Library. The Net Library, based on the Berkeley Socket API, supports
data transfer using TCP and UDP connections while the Internet Library adds support for HTTP and HTTPS. Wireless
communications are now possible using the Palm VII organizer via the Palm.Net wireless network. This network
uses the BellSouth Wireless Data network to send and receive data. Currently, special applications known as Palm Query Applications (PQAs)
are installed on the handheld device and are used to submit requests for data and then retrieve data using UDP. As this is a purely
proprietary approach, it remains to be seen whether more standardized means of data access (WAP, for instance) will become the norm.
Basic sound capabilities are provided by the Palm OS, including support for playback of Standard MIDI Files (.smf files). Sound
playback is limited to one note at a time through a tiny speaker inside the device. Access to the Palm OS Sound Manager is
provided through an API that supports the playback of custom sounds and system sounds as well as the ability to control
default sound settings.
If you've never designed for a handheld device, there are obviously a number of ways in which this type of development differs
from standard desktop application development. Here are a few keys to keep in mind:
- Remember that the screen is tiny! Instead of forcing the user to scroll down three or four screen lengths to select
data items, always attempt to think of ways to allow the user to "drill down" into the data by selecting options.
- Processing power is limited. If possible, store data in a raw format, saving number-crunching and analysis for the
desktop workstation or enterprise server. In most cases, handhelds are simply used for data collection, not data analysis.
- Memory space is also extremely limited. To quote the Palm OS Programmer's Companion from Palm Computing, "Because of
the limited space and power, optimization is critical. To make your application as fast and efficient as possible, optimize for
heap space first, speed second, code size third."
- Be consistent with the UI. Get a feel for how the standard Palm applications work (To Do, Address Book, Date Book, Memo Pad, etc.) and
stick very closely with their UI styles. Most of these applications provide a very basic entry screen that fits the needs
of most users. They then provide more advanced functionality available through selecting a button or menu item.
- Minimize steps required to properly perform data synching. The most successful applications hide synchronization
details from the user, allowing the user to simply place the unit in a cradle and press a button.
- Wireless communications capabilities are currently limited and not 100% reliable. Test your application in a variety
of environments and attempt to limit, as much as possible, the amount of data being transmitted. If you're developing
an application to be deployed in multiple cities (or even countries) look into wireless middleware options from vendors
such as NetTech, Aether, and IBM. This middleware allows the developer to isolate the application layer from the underlying
communications layer providing for greater flexibility and maintainability.
The Business Case
From a developer's viewpoint, the primary advantage to building Palm applications is the sheer number of users available to
buy your application. As the market share leader, Palm Computing has the advantage now of driving the market in the direction
that they are interested in going as opposed to following behind another hardware or OS vendor. Because the OS was built
from the ground up to run on small, low powered devices, it is likely that it will eventually appear in a number of
settings, from wireless phones to electronics consoles to machine control interfaces. Vendor support and connectivity
to enterprise products from IBM, Oracle, Sybase, and SAP have allowed the Palm to become an integral component
in real-world business applications.
The Palm OS's biggest disadvantage when compared to products such as Personal Java and Windows CE is the development
knowledge required to build applications for it. For instance, Microsoft has produced Windows CE versions of its
popular Visual Basic and Visual C++ tools which result in a much shorter learning curve for the average developer. The Palm devices'
monochrome screens have their critics as well although a color screen (coming in Spring 2000!) does come at a price in terms of power requirements and cost.
Finally, Palm devices currently use the Motorola 68328 (Dragonball) processor which is limited in terms of speed and computation
capabilities thus limiting the level of handheld application processing.
Hardware Support (partial list)
Software Support (partial list)
See our Books section for recommended Palm books that can be ordered directly from WirelessDevNet.com.
Palm Computing Developer Zone