Symbian Developer Network

Learning

Fundamentals of Symbian OS

When starting out with Symbian OS, there can be a lot to take in. Which articles should you read and in what order? How do you find the information that you need to get started quickly?

This page organizes the resources that will help you get started with Symbian C++ by ordering them according to the Fundamentals of Symbian OS curriculum. The curriculum covers all the important topics needed to be a competent Symbian C++ developer, and it is this that is tested by the Accredited Symbian Developer (ASD) exam.

The ASD scheme is an industry-standard qualification with an exam that assesses an individual's understanding of the fundamental aspects of Symbian C++ software development. Further information about the ASD can be found within the learning resources page of the Symbian Developer Network site.

Even if you don't intend to become an ASD, this article can direct you to the best information about the core topics needed to progress with Symbian C++. If you've got a problem with descriptors, or a question about active objects, you can easily find the latest and greatest papers about each topic here.

C++ Language Fundamentals

The first three sections of the Fundamentals of Symbian OS curriculum cover generic C++ programming, such as the structure, syntax and semantics of the C++ language. The curriculum includes object-oriented programming support and covers more advanced C++ properties, such as design considerations when using inheritance and both dynamic and static polymorphism.

None of this is special to Symbian C++, so to find out more, you can use any number of widely available C++ books and courses, and select one that best fits your learning methods. Of particular note are:

Books:

Stanley B. Lippman, Inside the C++ Object Model, Addison-Wesley, 1996.

Scott Meyers, Effective C++, 3rd Edition, Addison-Wesley, 2005.

Scott Meyers, More Effective C++, Addison-Wesley, 1996.

Bjarne Stroustrup, The Design and Evolution of C++, Addison-Wesley, 1994.

Stephen Dewhurst, C++ Common Knowledge: Essential intermediate programming, Addison-Wesley, 2005.

Herb Sutter and Andre Alexandrescu, C++ Coding Standards: 101 rules, guidelines and best practices, Addison-Wesley, 2004.

Jo Stichbury and Mark Jacobs, The Accredited Symbian Developer Primer, John Wiley & Sons, 2006.

Any number of books by Herbert Schildt, or if that's too heavy, perhaps even something from the For Dummies series.

Online:

There's a fairly extensive and complete tutorial at: http://www.cplusplus.com/doc/tutorial.

A wide ranging set of tutorials at: http://www.cprogramming.com/tutorial.

Learn C++ in 21 days (so they say!) at: http://www.softlookup.com/tutorial/c++/index.asp.

Fundamentals of Symbian OS

The following sections list the specific parts of the Fundamentals of Symbian OS curriculum, along with any associated content that may prove useful.

Symbian OS Types & Declarations

This is all about the fundamental Symbian OS types, naming conventions and coding style, and the usage paradigms of each basic type of Symbian OS class. A sample chapter from Symbian OS Explained covers each of the types, as does the Essential Idioms section of the Symbian Developer Library documentation.

There's also short overview of T, C, R and M classes, and a tutorial about CBase, the base class for most objects, on the NewLC developer community website.

Cleanup Stack

How Symbian does leaves and exceptions, and how this differs from standard C++.

SDN has an article on Leaves and Exceptions and an article on Exception Handling.

There's a tutorial on Exception Handling and Cleanup at NewLC.

Object Construction

Symbian OS employs a two-phase construction, safely creating objects and avoiding memory leaks.

SDN has an article on Leaves and Exceptions. NewLC has a tutorial on Leave and TRAP, the second part of which concentrates on NewL and NewLC. The June 2008 Symbian Developer Network Code Clinic discusses two-phase construction in detail.

Descriptors

Descriptors are the Symbian OS-equivalent of strings.

SDN has an article giving an Introduction to RBuf and another on the general use (and abuse) of descriptors. Forum Nokia has an article on Descriptors, with example code, and there is even a blog devoted solely to them.

Dynamic Arrays

Symbian OS provides a set of dynamic array classes that are documented in the Symbian Developer Library documentation.

SDN has an article on Advanced RArray usage.

Active Objects

SDN has an article on CActive and Friends.

Forum Nokia has articles on Active Objects and the Active Scheduler, Thread Programming, Threads and Active Objects, and Multiple Threads (the last two with examples).

System Structure

This section covers the underlying structure of Symbian OS, including threads, processes, DLLs and memory management.

SDN has an article on Publish and Subscribe and one on Support for Writeable Static Data in Symbian OS. The April 2008 Symbian Developer Network Code Clinic also covers Writeable Static Data and how to implement the Singleton pattern.

Client Server

Symbian OS uses a client-server model extensively, which pass messages to each other using inter-process communication methods.

SDN has an article on New IPC Mechanisms for Symbian OS and another on Transient Server Template.

File Server, Store & Streams

Both persistent and temporary data is stored using files, stores and streams. Sample code to illustrate file handling, created to accompany the Quick Recipes on Symbian OS book, can be found on the book's example code wiki page.

NewLC also has an article on saving a High Score Table to a file store.

Sockets

Sample code to illustrate how to use sockets on Symbian OS has been created to accompany the Quick Recipes on Symbian OS book, and can be found on the book's example code wiki page. You may also wish to consult the Symbian Press book Symbian OS Communications Programming, Second Edition.

Tool Chain

There's a complete tool chain available when working with Symbian OS. Carbide.c++ is the supported IDE (there's also a support forum), with RVCT the recommended commercial target linker. For those getting started with Carbide.c++, the Symbian Press booklet Carbide.c++ v1.3 is recommended reading.

Platform Security

Platform security is an important aspect of Symbian OS. Knowledge of the Trust Model, Capabilities and Data Caging are essential when designing, developing and distributing software on Symbian OS v9.x.

The definitive reference to platform security is the Symbian OS Platform Security book; Symbian Press have provided a free sample chapter, which discusses platform security concepts. A Symbian Press booklet, Platform security for all, which is based on key parts of the book, was published in June 2008. There's also a technical overview available. Further information about Symbian Signing, including the booklet A guide to Symbian Signed, is available from the Symbian Signed website.

Binary Compatibility

Binary compatibility helps to ensure that applications run on many minor revisions of Symbian OS. There are a number of programming and design techniques which are required to maintain binary compatibility in code modules and APIs. The Accredited Symbian Developer Primer covers binary compatibility in further detail, and you can also find further information the Symbian Developer Library documentation.

General Resources

In addition to the specific areas covered by the the Fundamentals of Symbian OS, it's worth mentioning the more general resources that cover all the areas.

Books:

There are a number of books published by Symbian Press; here are some recommendations:

For beginners to the Symbian environment: Developing Software for Symbian OS - Second Edition by Steve Babin (of IBM).

Another good beginner book is Quick Recipes on Symbian OS, which uses the 'cookbook' format to get you up to speed with Symbian technologies such as networking, graphics, and location-based services within two weeks.

For a brief introduction but greater coverage of the core concepts: Symbian OS C++ for Mobile Phones Volume 3 by Richard Harrison and Mark Shackman.

A more in-depth, technical treatment of the main concepts is in: Symbian OS Explained by Jo Stichbury.

The Accredited Symbian Developer Primer by Jo Stichbury and Mark Jacobs covers the Fundamentals of Symbian OS curriculum.

Symbian Press also publish a number of booklets, which are available online as well.

Online:

The Symbian Developer Network (SDN) is probably the best online resource to start with. It has lots of information about Symbian OS and contains a section devoted to Symbian C++, which has many more papers than are referenced below. There's also a variety of content on the SDN wiki to support developers.

Both general guide material and specific API references are available in the Symbian Developer Library (SDL). You can either read it online, or download a CHM version (good to keep this on your desktop). It's also available within the various SDKs. It contains a useful Application Development Tutorial, with further links to topics within the SDL.

You can find other material (often geared to a particular user interface) at our Licensees' developer websites. For S60, there's Forum Nokia; for UIQ there's the UIQ Developer site, MOTODEV and also Sony Ericsson's Developer World.

Forum Nokia has a very comprehensive Symbian C++ Quick Start page. The Symbian Basics course material is available to Forum Nokia developers free of charge. You can download both the Symbian OS Basics Workbook and the Lab Exercises. For all of Forum Nokia's Symbian technical articles, see their documentation page. Their eLearning page covers mainly S60, but has content relevant to Symbian OS and Carbide.c++ too.

Forums are a good place to ask questions. For C++, post your queries on the SDN Forum, the Forum Nokia Discussion Forum or on the UIQ Forum. The links take you to the C++ forum for each site, but there are a range of other topics available too.

Training Courses:

Symbian's training partners offer a number of courses, detailed in the Training pages on SDN. The "Symbian OS: Essentials" ones are useful for developers new to Symbian OS.

 

FAQs

Here you can find the answers to the most frequently asked developer questions, together with other useful tech tips.More