Microsoft Windows CE is a scaled-down operating system designed specifically for what Microsoft terms ‘information appliances’. In Microsoft’s vision, these appliances range from handheld computing devices to mobile phones to automobiles to industrial equipment. At the time of this writing (early 2000), CE is currently undergoing a marketing facelift due to weak acceptance in the horizontal marketplace (CE has done well in vertical industry applications but has failed to catch on with the public at large). Part of this marketing “touch-up” has been the renaming of the next version of CE, version 3.0, to the Pocket PC. Whether developers and the industry at large actually switch over to this naming convention remains to be seen. The purpose of this document, however, is not to address CE’s marketing strategies. Instead, we will present a brief overview of CE’s capabilities and device requirements in order to allow you to make an informed decision when purchasing or developing software for these devices.
Why Windows CE?
Windows CE development presents a unique set of challenges to those already accustomed to developing for the Microsoft Windows family of operating systems (95/98/NT/2000, etc.). Windows applications, at a minimum, must be recompiled before running on CE hardware platforms (CE devices are not required to use Intel x86 chips…). In some cases, due to differences between the standard Windows APIs and the CE APIs, code will not port at all without significant changes. In addition, memory and display constraints on Windows CE devices force developers to think of Windows application development in a different light. Currently, CE devices are available in three “form factors”:
- The Handheld PC – handheld devices supporting a display size of 640 x 240 pixels, touch screen with a small keyboard, optional sound, and a CompactFlash and/or a PCMCIA slot
- The Palm PC – palm-sized devices supporting a display size of 240 x 320 pixels, no keyboard or mouse, optional sound, and a CompactFlash slot
- The Auto PC – in-car system supporting voice activation, wireless communications, and a built-in navigation system.
All of these interfaces run a shell that is very similar to the standard Windows shell. This consists of the same windowing look-and-feel along with a taskbar at the bottom that can be used to launch and control applications. Many in the industry cite this interface as one of CE’s limitations and Microsoft has purportedly modified this interface for CE 3.0. This interface design helps make clear the different design philosophies that obviously exist between the Palm OS and Windows CE. While the Palm was designed to be very efficient and simple to use, CE seems to have had a design goal of leveraging user familiarity with Windows onto a smaller screen size and form factor. Many CE users love this common UI however one problem with it is that handheld users are often accomplishing different tasks in different settings than standard desktop users. To repeatedly enter extra stylus clicks and menu selections simply to lookup someone’s phone number is often cited as a primary reason why Palm has vaulted ahead of CE in terms of market share. Our personal philosophy is that this race has hardly begun. We can easily recall the days when early versions of Windows itself were scarcely used and market dominance seemed more equivalent to a pipe dream! Watching all of these products mature and transform themselves to meet market demands will be very interesting.
Microsoft Windows CE’s code base is separate from that of “industrial-strength” operating systems such as Windows 2000. CE was designed to run in memory- and power-constrained devices. It was also designed so that it could be quickly ported to new hardware architectures.
The primary feature that differentiates Windows CE from competitors such as the Palm OS is that CE is a 32-bit, multithreaded, multi-tasking operating system. Again, the design philosophy differences show up here. Palm Computing designers opted for a simpler, power-conserving operating system since they were assuming that the handheld user only wanted to retrieve simple information quickly and efficiently. CE designers, on the other hand, opted for a more powerful solution that offers the potential of running processor-intensive applications (such as MP3 and video playback, spreadsheet calculations, etc.). Benchmarks have shown the Windows CE operating system in combination with MIPS and SH3 hardware to be far superior to the Palm platform based on the Motorola Dragonball processor (essentially an older 68000 variant). Obviously, this is one factor to consider when choosing your operating system. What sort of operations will you be performing on a routine basis? Also, what type of battery life do you expect? Batteries can on Palm devices can last on the order of six weeks; CE color devices, on the other hand, can drain batteries within a single day (and can be recharged again for the next day of work)!
Because Windows CE was designed to be portable to a wide range of processors, power management details differ from one device to the next. However, the CE API does support a set of power monitoring functions in order to allow applications to determine the remaining life of the battery, whether batteries are currently being used (i.e. is the device plugged into AC power?), and whether the batteries are currently being charged. Well-written CE applications will monitor power levels and will alert users and gracefully exit as levels become critically low.
Data Management and Synchronization
The Windows CE API provides access to a system object database. This database supports data compression, searching, and sorts and synchronization with the desktop through the Microsoft ActiveSync services. ActiveSync supports synchronization with other Microsoft products such as Outlook (for email and contacts) and Access (for database information).
Serial Port Communications
Serial communications take place through a standard serial port on CE devices (known, surprise!, as COM1). The majority of the standard Win32 communication APIs have been ported to CE so it is very likely that any communications code you’ve written for Win32 can be quickly ported to a CE device with minor modifications.
Infrared communications take place over an IR serial port using the industry-standard IRDA protocols. Infrared communications allow data to be “beamed” between participating devices and CE provides a number of APIs for programmatically performing these tasks.
Through the CompactFlash slot included with many Handheld and Palm PCs, Windows CE devices can be expanded to support standard Ethernet connections as well as wireless LAN connections (using products such as the Proxim RangeLan2 card for Windows CE). Some Handheld PC devices also include a PCMCIA which obviously opens up your CE device to a very wide range of add-ons including network, GPS, and modem cards.
Stereo sound is supported on Windows CE but the majority of standard Win32 APIs are not. The Windows CE API does support sound recording and playback using the Windows-standard WAV format. Third-party MP3 players allow CE’s multimedia capabilities to be greatly expanded.
Windows CE devices can be expanded through their support of a CompactFlash slot (all Palm PCs include this slot, by definition). This expandability allows extra memory or other devices to added quickly and inexpensively to a CE device.
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 CE applications work 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
Windows CE’s greatest advantage is easily its similarity to the other members of the Microsoft Windows family of operating systems. The vast majority of professional software developers have experience developing applications to the Windows API using Microsoft tools such as Visual C++ and Visual Basic. The ability to leverage those skills in the future is simply to large a factor to ever count Windows CE down and out. In addition, Microsoft is currently working very hard to make CE THE platform for in-car computing, a market that is predicted to grow dramatically during this decade. Add in the availability of familiar applications such as Word, Excel, and Outlook, and Windows CE can be an attractive proposition for many individual and enterprise users.
Ironically, after Microsoft has grown Windows to a point to where it thoroughly dominates corporate desktop usage, CE’s market share has started out small and grown smaller! A number of factors can be attributed to CE’s lack of widespread success: CE’s extra memory requirements, user interface, and battery usage requirements lead that list. While there is no question that Microsoft is intent on becoming a major player in the handheld computing market, the rest of that market is not standing still. The year 2000 should see the widespread deployment of Palm organizers with color displays, Handspring Springboard modules for a variety of applications, WAP devices and applications, and mobile Linux announcements. The release of Windows CE 3.0 could be a key event that determines whether Microsoft can grow market share to become a major force or whether CE will remain a “niche” operating system with no mass market momentum.