Browse DevX
Sign up for e-mail newsletters from DevX


From Palm OS to Symbian OS: Making the Switch, Part 1 : Page 2

Thinking about switching from Palm OS to Symbian OS? The proliferation of smartphones has made it necessary to build many wireless applications from the operating system on up and Symbian OS seems to have this market cornered. This two part series outlines the differences between developing for Palm OS and for Symbian OS. So if you do decide to switch, you'll know what to expect.




Building the Right Environment to Support AI, Machine Learning and Deep Learning

Uniquely Symbian
Symbian OS has a few quirks, which you should know about whether you're switching from Palm OS or any other operating system. A prime example is that Symbian OS uses its own exception-handling mechanism: Leaving. Any function with an "L" at the end of its name can leave. Given limited memory, you can count on a lot of memory exceptions or 'leaves' during the development process. Efficient memory management is the key to avoid leaving the program in a memory muddle.

Fortunately, Symbian OS also provides a "Cleanup stack" tool to help with leave exceptions. Use the Cleanup stack to handle these leave memory exceptions with minimal trouble.

What will stand out the most for C and C++ developers though is that descriptors are used for text and binary data, instead of regular C strings. Think of descriptors as a string class with bounds checking. You can't avoid these though without reinventing a lot of wheels. Symbian's APIs' use these descriptors constantly.

Symbian also uses an "active scheduler" for non-preemptive, active objects multitasking. On other operating systems, you'd probably use threads to do the same work. Since active objects are a key Symbian OS construct, you're better off learning how to use active scheduler rather than playing with Symbian OS threads to achieve the same result with more trouble.

System Fundamentals
There are superficial similarities in developing for each system. For example, they both support C++ and Java as primary development languages.

With both, you must design for a small, mobile device with limited screen space, memory, and input options that users will typically use for intermittent short, frequent bursts of activity. And, as always with handset devices, you must limit power consumption to the lowest possible level.

The table below shows the fundamental similarities and differences between the two operating systems.

Table 1: Palm OS/Symbian OS Artchitecture Shart.

Primary Target Devices



Current Versions

Palm OS 5.2

Symbian OS 7


Older versions targeted Motorola DragonBall family. Newer version targets ARM processors.

ARM processors

User Interface



User interactive I/O

Pen and keypad

Pen and keypad

User Interface

GUI with check box, radio button, list, scrollbar support.

GUI with check box, radio button, list, scrollbar support.

User Interface Support

PilRC and Constructor UI builder tools.

Layered UI framework. UIQ 2.1 for Symbian OS with theme support.

Languages/Code Support




Native: C and C++. JVM support.

Native: C++. JVM PersonalJava and JavaPhone technologies in OS 6 and higher. Java MIDP in OS 7.


Requires resource files.

Native Unicode support.

OS Application Specifications




Available only for system services, not applications.

Although designed for event-based time sharing on a single thread, it also supports multitasking and multithreading applications. Only one application at a time can have access to the UI.

Maximum Memory

16MB, Moves up to 128MB in 5.2

Hardware driven, theoretically as high as 2GB.

Memory Usage

Applications must share memory with the operating system in main, also called dynamic, RAM. Some RAM, Storage RAM, is set aside for storage. Flash memory and expansion card memory can only be used for storage.

Applications share RAM with operating system but has exclusive access to their allocated memory area. All RAM available for OS and applications. Flash and expansion card memory is used for storage.

Shared Libraries


Yes, DLLs, polymorphic DLLs.





TCP, UDP with socket API, IrDA, serial, Bluetooth.

TCP, UDP, IPv4 & v6 with socket API, IrDA, serial, Bluetooth.

Network Services



Data Synchronization

HotSync, Conduit Development Kit.

Connectivity SDK, SyncML.

Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date