The user interacts with each of the devices I’ll discuss here differently, due to their differing designs.
For the purposes of this article, I’ll describe the differences between the devices I worked with
during the development of the tool kit: the Palm i705 Handheld running Palm OS4, the Compaq
iPAQ 3670 Color Pocket PC running Pocket PC 2002, and the BlackBerry 5810 Handheld running
BlackBerry OS 3.2 platform, a Java language operating system. Understanding these differences
was key in developing an application that ran on all the devices.
Note that the IBM J9 Virtual Machine that runs on Palm OS4 platform does not support the INETLIB
networking library on the Palm i705 device. Therefore, there is no way to make a network call with
this VM on this device, and thus the Web Services Tool Kit for Mobile Devices does not support the
Palm i705 Handheld. (Other Palm OS4 devices are supported.) However, non-networking applications
can still run on the Palm i705 Handheld to help pinpoint user interface issues that arise with Palm
- Palm i705 Handheld: The user interacts with this device via a touchscreen. Menus are also
available but are accessed via the menu button provided by the device.
- iPAQ 3670 Color Pocket PC: The user interacts with this device via both a touchscreen and
a five-way hardware button on the bottom of the device. As you’ll see, the touchscreen does
not work with all GUI controls available in MIDP, making your choice of GUI control important.
- BlackBerry 5810 Handheld: The user interacts with this device via a trackwheel and a
hardware selection button. This device does not support a touchscreen and is therefore
completely menu driven. Because there is no touchscreen, the process of selecting items is
different than it is on the other devices. You use the trackwheel to change the highlighted
item, then use the menus or the spacebar to select the highlighted item.
User interface differences: Menus and buttons
Some of your design decisions are going to be based on the inherent differences in the devices, as
well as the differences in how data is rendered by the different MIDP implementations. For instance,
as noted, the BlackBerry device does not have a touchscreen and operates from a menu-driven
interface. Therefore, you must design your application to be menu driven if you want it run unmodified
on each device.
MIDP contains a Command class that the user can trigger; this class is used to encapsulate operations.
Because the BlackBerry device is completely menu driven, all Command objects are displayed as
menu choices on its UI. On the other devices, the MIDP implementation determines whether the
device displays the Command objects as menu choices or as buttons.
For example, on the Palm i705 Handheld, all Command objects are displayed as menu items. On the
iPAQ device, in contrast, they are preferably displayed as buttons; but when there are too many
Command objects to fit on the screen, a Menu button is added that, when pressed, displays the
remaining Command objects in a menu. In your code, you can determine the order in which these
objects appear: when you create Command objects, you create them with a CommandPriority. The
lower the number, the higher the priority. On the iPAQ device, the Command objects with the
highest priority are given preference to display as buttons rather than menu items.
Because of these differences, when you are designing an application to run unmodified on these
various devices, it is important to design the application’s flow around the Command class and
accept that your Command objects will display either as buttons or menu items depending on the