|
||
A major part of any software development project involves finding and understanding the application programming interfaces (APIs) you'll need to use to achieve your tasks. The basic elements of these APIs are the header files you include in your code, the libraries you link against and their documentation. However, with over 600 libraries and over 2500 headers in a typical SDK, understanding the whole system isn't easy. The Symbian OS system documentation attempts to make things simpler by grouping the elements into about 150 larger functional areas corresponding to OS components and into around 20 top-level areas (termed subsystems). This top-down view of the system is introduced in the Symbian OS Library in Subsystems and APIs.
Another way to understand the APIs is to compare them with the interfaces of other systems that you already know well. This appendix maps Symbian OS interfaces to those of other, commonly used platforms (ANSI C, the C++ standard library, Java, and Windows/MFC). If you find this approach useful, and want to read case studies and discussions of moving to Symbian OS from other systems, there are papers on the Symbian Developer Network in the Migrating to Symbian OS section.
The following table lists the ANSI C standard library headers, and provides links to where similar functionality can be found in Symbian OS.
|
Asserts are provided by system macros, see system macros and E32_EKA2. |
|
Character functions are provided by |
|
System wide error codes are defined as integers,
see e32err.h Global variables. Apps
can add their own errors, and instruct the system how to display them through
|
|
Constant definitions are in the header |
|
No direct equivalent. |
|
Locale settings are encapsulated by Locale settings. |
|
Maths functions are provided by Maths services. |
|
No equivalent. However, the trap and leave mechanism error handling system is similar in principle. |
|
No equivalent. |
|
Variable argument handling is provided by various macros, including
|
|
Closest equivalent is the header |
|
File handling is provided by the
File Server.
Consoles are accessed through
|
|
For conversion functions, see the descriptor classes (e.g. the base
class |
|
String handling is provided by the descriptor family of classes. |
|
Equivalents are provided by the Date and Time Handling API. |
The following table lists the C++ standard library headers, and provides links to where similiar functionality can be found in Symbian OS.
|
No direct equivalents, though for min/max see
Basic Types;
for basic sorts, see |
|
No equivalent. |
|
No equivalent. |
|
Queues are typically implemented using a list: see Singly Linked Lists. |
|
The main exception handling is provided by the trap and leave mechanism. Thread-level handling of processor exceptions is provided by Threads and Processes. |
|
See File Stores. |
|
No equivalent. |
|
No equivalent. |
|
See Streaming. |
|
No equivalent. |
|
No equivalent. Console handling is provided by the
|
|
See Streaming. |
|
No equivalent. |
|
Constant definitions are in the header |
|
See Singly Linked Lists. |
|
See Locale settings. |
|
See Array keys. |
|
No equivalent. Dynamic Arrays have various types for different pre-defined allocators. |
|
No equivalent. |
|
See Streaming. |
|
Queues are typically implemented using a list: see Singly Linked Lists. |
|
See Array Keys. |
|
Descriptors can be streamed as described in
Externalising and internalising descriptors;
see also classes such as |
|
See |
|
System wide error codes, see e32err.h Global variables are defined as integers. |
|
See the stream buffer classes, for instance
|
|
String handling is provided by the descriptor family of classes. |
|
Descriptors can be streamed as described in
Externalising and internalising descriptors;
see also classes such as |
|
No equivalent. |
|
No equivalent. |
|
See Dynamic Arrays. |
The following table lists the top-level packages in the Java(TM) 2 Platform Standard Edition 5.0, and provides links to where similiar functionality can be found in Symbian OS.
java.applet |
No equivalent. |
java.awt |
Graphics primitives are provided by the Graphics API. Controls, the equivalent of AWT Components, are defined abstractly in the UI Control Framework. Concrete components are provided by UIQ. |
java.beans |
No equivalent. |
java.io |
Streaming provides an abstract stream interface; streams can be combined into Stores. Concrete streams and stores for the file system are provided by File Stores. |
java.lang |
The user library provides equivalents, particuarly
Basic Types,
and the |
java.math |
High precision floating point is provided by
Maths services;
64-bit integers by |
java.net |
Sockets are provided by Sockets Client; URL handling by the Internet Protocol Utility component. |
java.nio |
Character-set encoders and decoders are available from the Character Conversion component; the channel and regular expression packages have no equivalent. |
java.rmi |
No equivalent. |
java.security |
See Certificate Manager. Cryptography algorithm interfaces are not exposed. |
java.sql |
DBMS provides database management, including SQL. |
java.text |
Locale settings provides formatting for locale-sensitive information. |
java.util |
Collection classes are provided by
Arrays and Lists;
event
handling by active objects;
date
and time facilities by Date and Time handling;
string
tokenizer by Lexical Analysis;
random-number
generator by |
javax.accessibility |
No equivalent. |
javax.crypto |
No equivalent. |
javax.imageio |
See Image Conversion Library. |
javax.management |
No equivalent. |
javax.naming |
Naming services (e.g. DNS) are available through the
Sockets Client
|
javax.net |
See Secure Sockets. |
javax.print |
See Print Framework. |
javax.rmi |
No equivalent. |
javax.security |
For certficates, see Certificate
Manager. For authentication, see |
javax.sound |
For sampled sound and MIDI packages, see Multimedia Framework. |
javax.sql |
See comments for java.sql. |
javax.swing |
See comments for java.awt. |
javax.transaction |
No equivalent. |
javax.xml |
No equivalent. |
org.ietf.jgss |
No equivalent. |
org.omg |
No equivalent. Symbian OS's ECom provides a management system for local component binaries. |
org.w3c.dom |
No equivalent. |
org.xml |
No equivalent. |
The following table lists the top-level MFC API categories, and provides links to where similiar functionality can be found in Symbian OS.
Root Class: CObject |
All Symbian OS classes that allocate resources on the heap are
derived from |
MFC Application Architecture Classes |
Uikon defines a roughly similar application architecture with application, document, and view classes (note though that commands are handled by the view class rather than command routing base classes). The platform UI layer, such as UIQ supplies, can specialise the application architecture classes. |
Window, Dialog, and Control Classes |
Frame windows: Symbian OS applications do not have a frame window as such. The app UI class creates screen furniture such as menus and toolbars. |
Drawing and Printing Classes |
Like MFC, Symbian OS has an abstract
graphics device,
and sub-classes for device types such as windows and printers. Instead of
separate drawing tool objects such as |
Simple Data Type Classes |
Simple geometric types are defined in various Geometry classes. Strings are handled by descriptors; date and time facilities by Date and Time Handling. |
Array, List, and Map Classes |
For arrays, see Dynamic Arrays; for lists, see Singly Linked Lists and Doubly Linked Lists; for maps, see Array Keys. |
File and Database Classes |
File handling is done through the File Server. An abstract interface for many types of storage is provided by Streaming: the specialisation of streaming for files is provided by File Stores. A compound file of multiple files is referred to as a store. DBMS provides database management. |
Internet and Networking Classes |
Sockets are provided by the Sockets Client; HTTP services by HTTP Client. There is no gopher or FTP support in Symbian OS. |
OLE Classes |
There is no equivalent. The Symbian OS application architecture supports embedding of documents, but this facility is not used in UIQ. UIQ prefers applications to link using dynamic navigational links (DNLs) in views. |
Debugging and Exception Classes |
The emulator provides debug facilities for manipulating and checking memory and other resources. Debug builds of applications automatically check for memory leaks and report unfreed cells on exit. Errors are indicated by the System wide error codes, see e32err.h Global variables |
The Symbian Developer Network paper Symbian OS for Windows programmers may also be helpful to Windows programmers migrating code to Symbian OS.