Developer Product Briefs

Evolving the Symbian OS

As Symbian OS-based phones appear in the midrange market, mobile developers can take advantage of enhancements and innovations in Symbian OS version 9. Take a look at what's new.

Evolving the Symbian OS
See the opportunities for Symbian-based midrange handsets these technical enhancements will give mobile application developers.
by Mark Shackman

April, 17, 2006

The focus of Symbian OS version 9 is to enable high-volume, midrange handsets and to address the requirements of this market through an industry-standard application binary interface (ABI), a real-time kernel, and an enhanced platform security model. Additionally, Symbian OS version 9 implements an API baseline that will be maintained through future releases to enable easier porting of applications among Symbian OS phones. Let's take a look at what's new in this latest version of the Symbian OS.

There are several new and changed application programming interfaces (APIs) in Symbian OS version 9. Symbian OS introduced a number of APIs to support recent software standards and hardware. The OMA standards evolution (formerly SyncML) includes OMA Data Synchronization 1.1, which is used for agenda and contacts, and OMA Device Management 1.1.2, which is used for device management. It also supports OMA client provisioning 1.2. Within personal area networking there is support for a Bluetooth stereo headset and USB mass storage; multimega-pixel cameras are supported; and within security there are specific changes for DRM framework support and API updates that are required for platform security.

There are also some new and updated tools. Symbian OS version 9 is built with ARM's RealView Compilation Tools (RVCT) 2.2, which fully supports the ARM 5 and later architectures. RVCT delivers substantial performance and footprint benefits compared to the earlier GCC compiler, and the ARM ABI allows applications to be built with alternative, compatible compilers. Additionally, the ARM ABI enables Standard C++ support. In Symbian OS version 9, this support has already begun by enabling generation of runtime type information (RTTI) and implementing Symbian OS native exceptions in terms of C++ exceptions, without requiring developers to make any source code changes.

Symbian OS version 9 continues to support a GNU Compiler Collection (GCC) compiler for low-cost application development, with the required version having been updated from GCC 2.98 to GCC 3.4. As GCC 3.4 is compatible with RVCT 2.2, developers have a choice between the low-cost compiler and a high-performance compiler. The Metrowerks CodeWarrior IDE has been joined by Nokia's Carbide, an Eclipse-based solution, with an entry-level product that will be free to download. This toolset allows developers to code for Symbian OS without incurring any tools cost.

Note that the use of a new tool chain means that code compiled for previous versions of Symbian OS is not binary compatible with Symbian OS version 9 code. The introduction of enhanced platform security has necessitated a small number of changes to APIs that have broken source compatibility as well. (See "Efficient MIDP for Symbian-Based Devices" for information about overcoming execution environment challenges when developing mobile Java mobile applications for Symbian OS-based handsets.)

Platform Security
Large changes have been made to the core of Symbian OS to both protect the user (in terms of confidentiality and expenditure) and the network, and also to provide comprehensive support for new functionality such as digital rights management and device management. New concepts such as data protection, or caging, and restricting some API usage have been introduced. These platform security enhancements represent an evolution of the existing perimeter security model of Symbian OS and help ensure the stability of the platform.

Symbian OS version 9 provides protection by ensuring that only trusted applications can use certain functionality within Symbian OS. It introduces the idea of capabilities, which protect APIs within Symbian OS. The majority of Symbian OS APIs don't require protection and are, therefore, unrestricted; those that are protected by a capability are often used to access the low-level aspects of Symbian OS or to ensure privacy. For example, sending a text message, which incurs a cost to the user, requires the NetworkServices capability, and accessing user-confidential data, such as contact information, requires the ReadUserData capability.

If your program needs to use any of the APIs that are protected by a capability, it must request use of the capability. This request is called authorizing your code. Once authorized, the program can use the protected functionality. Symbian Signed is a certification program that provides a route to authorizing your programs before the user receives them (see "Mobile Java Resources"). Some capabilities can be authorized by the user on installation, however, so it's best to check the Symbian Signed Web site for full details.

Symbian OS version 9 also provides protection for private data. Coupled with the necessity to separate code and data (preventing code in the data space from being executed), the file system has been reorganized to implement data partitioning. Privacy of data is ensured by caging processes into a specific part of the filing system. The filing system now has this structure:

  • /sys/ – a restricted system area. Executables can be run only from /sys/bin/.
  • /private/ – contains the private data for all programs.
  • /resource/ – contains public data that is read-only for most programs.

All other directories are public and may be read from and written to by any program. This structure is enforced by the software installer when new programs are installed or existing programs are updated. Only the software installer may change executables in /sys/bin/ on the internal drive, so executables cannot be tampered with by other software.

Migrating Applications
The security enhancements introduced in Symbian OS version 9 mean that there are a number of minor changes to be made to your code and projects to use new platform security-enabled APIs. To support the new architecture, a number of APIs have been added, amended, or deleted. Information about these changes is available in the SDKs, and if any of the APIs that you use is affected, you'll need to make the appropriate changes.

The capabilities that a program needs are defined at build time in the project's definition file, which uses the CAPABILITY keyword followed by a list of the capabilities that the executable requires. You can work out what capabilities need to be specified by checking the documentation—which will show which API calls are protected by what capabilities—and by looking at the emulator output file.

Data caging has necessitated the relocation of resources, so the new path must be specified in a START RESOURCE, END block in the project definition file. A new resource registration file is also required. Applications are now assigned a secure identifier (SID) to uniquely identify them, which must be specified in the project file. They can be obtained online; details are available through the UIDs link on the Symbian Signed Web site (see "Mobile Java Resources").

In Symbian OS version 9, applications are executables rather than libraries loaded by the Application Architecture framework. Some minor changes in source code are required to support this change—specifically, the E32Dll() API is replaced by E32Main().

The enhancements and innovations that have been introduced with Symbian OS version 9 can provide for widespread adoption of Symbian OS in midrange handsets. Even though Symbian OS version 9 has introduced some small breaks in source compatibility, developers who make the effort to port their existing code to the new platform will find their effort will be amply rewarded by the opportunities available as Symbian OS phones make their debut in the midrange market.

About the Author
Mark Shackman is a developer consultant at Symbian Software Ltd. He joined Symbian/Psion as a technical author more than eight years ago, coming from Morgan Stanley, and he worked as a technical architect on the Kits team before moving to the Symbian Developer Network within the marketing division. Mark holds a first-class honors degree in computing studies, a master's degree in digital systems, and a postgraduate certificate of education.

About the Author

Mark Shackman is a developer consultant at Symbian Software Ltd. He joined Symbian/Psion as a technical author more than eight years ago, coming from Morgan Stanley, and he worked as a technical architect on the Kits team before moving to the Symbian Developer Network within the marketing division. Mark holds a first-class honors degree in computing studies, a master's degree in digital systems, and a postgraduate certificate of education.

comments powered by Disqus

Featured

  • AI for GitHub Collaboration? Maybe Not So Much

    No doubt GitHub Copilot has been a boon for developers, but AI might not be the best tool for collaboration, according to developers weighing in on a recent social media post from the GitHub team.

  • Visual Studio 2022 Getting VS Code 'Command Palette' Equivalent

    As any Visual Studio Code user knows, the editor's command palette is a powerful tool for getting things done quickly, without having to navigate through menus and dialogs. Now, we learn how an equivalent is coming for Microsoft's flagship Visual Studio IDE, invoked by the same familiar Ctrl+Shift+P keyboard shortcut.

  • .NET 9 Preview 3: 'I've Been Waiting 9 Years for This API!'

    Microsoft's third preview of .NET 9 sees a lot of minor tweaks and fixes with no earth-shaking new functionality, but little things can be important to individual developers.

  • Data Anomaly Detection Using a Neural Autoencoder with C#

    Dr. James McCaffrey of Microsoft Research tackles the process of examining a set of source data to find data items that are different in some way from the majority of the source items.

  • What's New for Python, Java in Visual Studio Code

    Microsoft announced March 2024 updates to its Python and Java extensions for Visual Studio Code, the open source-based, cross-platform code editor that has repeatedly been named the No. 1 tool in major development surveys.

Subscribe on YouTube