Tightly Integrated Smart-Client Technology: Symbian C++
The Symbian OS is a sophisticated 32-bit operating system designed specifically for mobile devices. It consumes few resources and yet has a modular, object-oriented C++ architecture. It is based on preemptive multitasking and supports threading and asynchronous processing. It was anticipated that Symbian devices could run for years without being switched off, so reliability and stability were key design goals for the OS.
The Symbian C++ API provides complete access to services, such as messaging and multimedia, as well as device and OS functionality that is not available through the use of J2ME. Symbian OS is an open developer platform available on Nokia Series 60 and higher devices as well as on devices manufactured by other Symbian OS licensees.
The Evolution of Symbian OS
Symbian devices are proliferating because of Symbian's position as an open operating system for data-enabled mobile phones. Currently, Symbian has the most partners and licensees of any mobile OS, including Nokia, Sony Ericsson, Motorola, Siemens, Fujitsu, Samsung, Sanyo, and others.
The operating system began as software for PDAs from a company called Psion. Symbian was formed in 1998 to evolve this OS primarily for phones. These high-end phone handsets are now known as smart phones. The Symbian OS is layered to support different device designs while retaining core functionality across all products. Three families of product lines emerged:
- Keypad-based: These are designed for one-handed operation and do not have a touch screen. They are currently the most common type of Symbian devices, and Series 60 exemplifies this design. Nokia created the Series 60 platform on top of Symbian OS and licenses it to other manufacturers such as Siemens, Samsung, Panasonic, and Sendo. This gives consumers more choice while allowing them to exchange data, use compatible software, and switch smart phones without having to learn a new interface.
- Pen-based: These phones include a stylus for touch-screen operation. There are now two lines of pen-based Symbian handsets: UIQ phones and the Series 90 Developer Platform. The Sony Ericsson P800 was the first device with a UIQ user interface. Nokia does not make UIQ devices but has introduced the Series 90 Developer Platform, which represents the latest in mobile technologies.
- Keyboard-based: These phones, such as the Nokia 9500 Communicator, are the most similar to handheld personal organizers. They have a full keyboard as well as a touch screen for pen-based input.
In the future, user input will not be the primary distinction between these designs. There will be some convergence of product features, and the addition of new features will add different distinctions between product lines.
Symbian OS Architecture
Symbian OS API (Figure 2-16) contains hundreds of C++ object classes grouped in subsystems. We can also group these subsystems in layers.
Figure 2-16 The Symbian OS API architecture.
In general, we can think of the Symbian architecture in four layers or groupings: the application utility layer, the GUI framework and services, communications, and base system APIs.
- The application utility layer: This includes a variety of application-oriented utilities. Application engines give access to the data from built-in PIM applications, such as contacts and calendar schedules. This allows third-party applications to integrate with core applications easily. Other application services include specialized data management and data exchange.
- The GUI framework and services: The framework APIs give structure to third-party applications and provide for UI handling. These include UI controls and lower level APIs for multimedia handling of sounds and graphics. Symbian platforms such as Series 60 and UIQ extend the UI frameworks to provide for different UI designs. When developing Symbian applications, it's best to separate the UI and application logic. This limits the amount of code that needs to be ported between platforms.
- Communications: There's a broad stack of communication-related APIs. At a high level, there are messaging and browsing utilities. Beneath that is support for networking interfaces such as Bluetooth, infrared (IrDA), and USB; protocols such as TCP/IP, HTTP, and WAP; and of course mobile telephony services.
- Base system APIs: The base APIs encompass class libraries for data structures, file and memory access, date and time, and other basic system APIs.
Although it is more effort to develop Symbian C++ applications, there are compelling reasons to do so. As natively compiled C++ applications, Symbian applications can run much more quickly than J2ME applications. Depending upon the requirements of the solution, a Symbian application may be the only choice available. Symbian provides extensive APIs that give access to almost all the functionality in a handset now, whereas not all the MIDP 2.0 optional packages are available yet.