Archives / 2003 / December
  • Tools and Platforms: Choices for a Mobile Application Developer



    With the introduction and popularity of wireless devices, there are many top-name companies trying their best to capture the market. Unlike the PC, where MS Windows is the dominant platform, the mobile world is still open to be embraced.


    There are different platforms and tools from different vendors such as Qualcomm, Microsoft, Sun, Nokia, SonyEricsson and many more. This paper will look at some of the major platforms trying to dominate the market. To limit the domain of this paper, it’ll discuss only the platforms related to Cell phones rather than all the mobile devices such as Handheld, PDAs etc.


                    According to Samual May, a wireless analyst with U.S. Bancomp Piper Jaffray, “There’s a battleground out there. The stakes are big. The computer (PC) industry settled on one operating system. The cell phone (market) is bigger than the computer”. [1]




    It is certain that the mobile market is going to flourish dramatically. According to a research report by Strategy Analytics Inc, the global cellular market will double in size to 1.7 billion by the end of 2006. [2]


    The company’s latest report “Worldwide Cellular User Forecasts (2001-2006)” provide detailed forecasts of installed base, penetration and service revenues by major region and air interface.


                    “The W. European cellular market has grown at a phenomenal rate over the last two years, but this growth will slow down dramatically over the next two”, says Phil Kendall, a directory of Strategy Analytics’ Global Wireless Practice. [3]


    As we witness that with the growth of Smartphones, the number of real-time and revenue generating applications are starting to appear on the large and colorful screens. The shipment of Smartphones over the last year is summed up in Table 1.



    TABLE 1

    Smart Phone Vendor Shipments


    Q2 2003

    Q2 2003
    Market share

    Q2 2002

    Q2 2002
    Market share

    Q2 2002







    Sony Ericsson


















    Source: Canalys [4]





    There are three different development areas for Mobile Platforms apart from the SMS/MMS technologies. These are.


    A. Web Application


    This type of applications runs from a server and displays its result on the mobile device. The most popular language used to develop such applications is WML. But, due to the early failure of WAP and the simultaneous success of iMode (a similar language developed by NTT Docomo in Japan), the Wap Forum converge WML and iMode features into a new language called XHTML-MP (eXtensible HTML-Mobile Profile). XHTML-MP is a stricter version of HTML, which is trimmed down by some effect to display the result on Mobile devices. Apart from WAP, there are several languages available to an application developer to generate WAP output from other server side languages such as JSP, Perl, PHP, ASP etc. Recently Microsoft introduced an extension to the ASP.NET Framework, which abstracts the WML syntax from the developer and automatically generates the most suitable output for the device used. 


    B. Mobile Applications


    This is the area that this paper is going to cover. This type of applications run inside the Mobile device and uses its memory and disk space to perform several tasks. The different between these types of applications and Web Applications is that they can be run without internet connectivity and of course as being installed on the device, they can also use some device specific functionality which is not available otherwise. There are several options available to develop these types of applications as discussed later.




    A. Symbian


    Currently, Symbian holds the largest number of user base. Its licensees represented over 80% of mobile phone sales in 2002. Some of the big companies such as Nokia, SonyEriccson, Motorola, and NTT Docomo etc. are already investing heavily in Symbian OS. The chairman and CEO of Nokia, Jorma Ollila, stated in May 2001 that “…by 2004, 50% of Nokia 3G phones will be Symbian OS based. [5]


    There are several versions of Symbian OS. The Symbian v7.0 is the latest of all. It provides a robust architecture and API to support development. The Architecture Summary for Symbian OS is provided in Table 2.


    TABLE 2

    Symbian OS Features

    Target CPU

    Targeted at ARM handsets

    Memory Usage

    RAM is used exclusively for main memory, while Flash-memory or expansion cards are used for permanent storage


    Multitasking-Multithreading allows for background applications and multithreaded applications.

    Shared Libraries

    Supports DLLs

    User Interface

    Provides support for check boxes, radio buttons, lists, scrollbars, and other components.

    While many applications can be active at a time, Symbian OS UIQ supports one application presented to the user at a time – other tasks can run in the background.

    Provides a layered UI framework that allows for the implementation of different UI metaphors. UIQ is one user interface available to Symbian OS.

    Internationalization/Localization supported via resource files.


    Infrared, Serial, HTTP, HTTPS, TCP, UDP, Bluetooth, socket API, SSL, SMS, Telephony, Dual WAP, IPv4/IPv6 Stack, other.

    Data Synchronization

    Provides the connectivity software development kit to write data synchronization converters and plug-ins. Supports Synchronization Markup Language (SyncML).

    Supported Languages

    Native Programming in C++. Java Programming using PersonalJava 1.1.1 and Mobile Information Device Profile (MIDP) 1.0

    Source: Introduction to Symbian OS for Palm OS developers. [6]


    There are two ways to develop applications for Symbian platform. The first track is to choose C++, which is the native language of the Symbian OS and the second option is to use Java which runs on top of OS layer. In addition to the basic two choices, there is software called “MobileVB” by AppForge, through which you can develop applications on the Symbian platform using the traditional Visual Basic language. The only downside is that this tool is not free and hence only enterprise can benefit from this tool.


    With the generic componentized architecture of the Symbian OS, different vendors then choose some or all of the components to make up their own reference implementations. Such as Series 40, Series 60, Series 80, Series 90 by Nokia and UIQ used by SonyEricsson P800 and P900. A reference implementation can be licensed to a different vendor such as in the case of Series 60 and UIQ, where both of these technologies are licensed to Motorola for their Mobile Handsets. For reading about compatibility between these reference implementations, read the article Symbian OS System Definition by Martin de Jode, Colin Turfus, Symbian Developer Network, August 2003. [7]


    All these different reference implementations are discussed in details in the following section.


    1.) Nokia Series 40: For Nokia, a Developer Platform is made for each series of Handsets. There are actually two different Developer Platforms for Nokia Series 40, Developer Platform version 1.0 and Developer Platform 2.0. The latter version is slightly enriched in functionality and supported the latest java specs and profiles. The Developer Platform 1.0 consists of J2ME with Connected Limited Device Configuration 1.0 (CLDC), Mobile Information Device Profile (MIDP) 1.0 and the proprietary Nokia UI API which are used to deal with Full Screen Drawing, Access to Soft Keys, Sound and Vibration. Some series 40 handsets also support some of the Java Wireless Messaging API (JSR-120).

                    The Developer Platform 2.0 consists of J2ME with CLDC 1.1, MIDP 1.1 and the Nokia UI API for backward compatibility. In addition, it also supports Java Bluetooth Specifications (JSR-82), Wireless Messaging Specifications (used for SMS and Call Broadcast Service) and the Mobile Media API to deal with native sound and video services. [8]


    2) Nokia Series 60: This platform is by far the most popular developer platform for Handset devices. Similar to Series 40 architecture, this platform also supports Developer Platform 1.0 and Developer Platform 2.0. It should be noticed here that all these Developer Platforms are specific to the series and therefore the implementation of Developer Platform on Series 60 are different from the Developer Platform on Series 40. The Developer Platform 1.0 is installed on the likes of Nokia 7650, Nokia 3650, Nokia N-Gage, Siemens SX1, Samsung SHG-D700. The series 60 devices consists of large color screen with 176x208 pixels with 64K color depth. The developer platform 1.0 supports J2ME with MIDP 1.0, CLDC 1.0, Wireless Messaging API, Mobile Media API, XHTML browsing, Multimedia Messaging Service (MMS) and Symbian OS v6.0 Native APIs. The Developer Platform 2.0 supports MIDP 2.0, CLDC 1.0, Wireless Messaging API, Mobile Media API, Bluetooth API, MMS and Symbian OS v7.0 Native APIs. Until now, there is only one provided released on the Nokia series 60 Developer Platform 2.0 and i.e. Nokia 6600. The difference between Series 60 and Series 40 platforms is that the former runs on a complete Operating System and thus making it a smart phone. [9]


    3) Nokia Series 90: The latest is the series of Nokia platforms is series 90, which are installed on Nokia 7700 media device. The requirements released for this platform are of 640x320 pixels, touch sensitive and 16 bit color screen. This platform is also installed on Symbian OS v7.0 and supports Developer Platform 2.0. They have J2ME with MIDP 2.0, CLDC 1.0 with additional APIs for Bluetooth, Mobile Media and Wireless Messaging. It also supports XHTML browsing, MMS with Synchronized Multimedia Integration Language (SMIL) and User Interface Skins. [10]


    4) UIQ: UIQ defines an advanced mobile phone with specific functionality related to pen-based input and single tap operations. It also provides large color screen, innovative GUI and handwriting recognition input to implement advanced and easy to use systems. Its purpose is to combine the power of PDA and mobile phone into a single device. Currently there are only few devices supporting the UIQ platform namely: Sony Ericsson P800/P900, Ben Smartphone P30 and Motorola A920. Table 3 provides the technical summary for this platform:


    TABLE 3

    UIQ Technical Summary



    Mail and Messaging

    Electronic Mail, fax, SMS and MMS messaging

    Internet Access


    Programming Environment

    C++ and Java (with PC based development using an emulator)


    Serial and Infrared synchronization, data exchange and file transfer, Bluetooth


    Stylus, Hand writing recognition, Virtual Keyboard, scrolling and Confirm Hardware button.


    Optional removable CF Card or MMC.

    Source: Symbian UIQ Product Sheet. [11]


    The UIQ platform is installed on the Symbian OS v7.0.


    B. Microsoft Smartphone:


    Microsoft is a little late on pounding the opportunity provided by the mobile market. It entered into the market with its own operating system called Microsoft Smartphone OS. Instead of making the handsets, Microsoft is selling the operating system’s licenses to different vendors. Currently Orange, Motorola, Sendo and Voq Sierra made mobile phone running the Microsoft Smartphone OS. The real strength of Microsoft is in its platform. With an already proven Operating system and office suite, it can be an effective option for those looking for a similar user interface on mobile systems. In addition to the OS, Microsoft has the best development environment and a new unified development model in the form of .NET Framework.

                    The new Microsoft Smartphone OS is a compelling and powerful addition to the Microsoft family of Mobile products like Pocket PC OS and Windows CE. Like Symbian UIQ, it combines the telephony features with the functionality of a PDA in the shape of a mobile phone.

                    There are two different versions of the Smartphone OS currently in the market. The first is released in 2002 and called Microsoft Smartphone 2002. The Smartphone 2002 platform is based on the Microsoft CE 3.0 operating system and contains many of the core applications provided with the Pocket PC based computing devices, including email, IM and Pocket Internet Explorer. Motorola released its MPX200 cellphone in the U.S. and Europe market based on the Microsoft Smartphone 2002 operating system. It is the first handset provided by a major handset market, before that Orange made its EPV 100 on the similar platform.

                    The Smartphone 2003 is the latest of the two OS. Orange has already made its SPV 200 based on this platform. In devices with Smartphone 2003 OS, the .NET Compact Framework is in ROM. This Operating System is also built on the completely new architecture; it runs on Microsoft Windows CE.NET 4.2 enhancing APIs and overall programmability.




    In this section, we’ll explore all the major development environments available for a mobile application developer.


    A. BREW (Binary Runtime Environment for Wireless):


    BREW is an application execution environment released by Qualcomm in February 2001. Initially being restricted to work on only CDMA networks, now it is capable of running on any network and can be ported to any handset [12].


    Like J2ME, BREW is also vendor neutral development platform. It runs right above the hardware and runs on many different OS such as Palm OS. Regardless of platform, the main advantage of BREW is its low memory footprint (i.e. only 150K).


                    There are two essential components to the BREW platform. First is the BREW SDK, which is used by developers to create applications on it. Natively, it only supports the C and C++ programming languages, which poses a deeper learning curve for new developers. Because of this pressure, BREW decided to add Java functionality by selecting IBM’s Java virtual Machine. [13]

    The JVM runs in a layer top of the BREW platform and provides standardized J2ME APIs for the application developer.


    The second part of the BREW platform is for the end user. It is a piece of software or firmware required by a handset to run BREW applications on it. This component is available at no cost and in some case; it is equipped with BREW enabled cell phones.


    Another key feature of the BREW platform is the BREW Distribution System (BDS). While in other systems, the developer has to worry about testing, security and billing of the application they make. In BREW these are all managed by the BDS, which interfaces with the carrier’s billing system and permits them to sell them your application.  The developer don’t need to worry about billing, testing and application distribution within the network. But, because the company inserts itself between the application and the carrier, it receives a small share of the revenue that the developer and the carrier are getting. Even with that, BDS becomes the engine to drive the success of BREW.


    Qualcomm’s BREW is an exciting platform and a real competitor to J2ME. Now with more partnerships, such as with Oracle [15] to BREW enabling its 9i database, it is making serious inroads into the market.


    B. J2ME (Java 2 Micro Edition)


    The Java 2 Micro Edition is currently the most popular platform for developing applications for Mobile devices. J2ME is a smaller Version of Java 2 Standard Edition targeted towards consumer end embedded and small devices, which includes Cellular Phones, PDAs, Blueberry devices, Set-top boxes etc. There are around 600 companies the J2ME initiative by joining the development efforts. Companies like Nokia, SonyEricsson, Motorola, Sendo, Palm, RIM have already based their platforms on J2ME specifications. As with Java, the development of J2ME is also passed through the Java Community Process (JCP), which is a collection of different companies to work on a platform.

                    Although J2ME is a trimmed down version of standard Java but it supports platform independence and security. The overall J2ME architecture can be viewed as,


    • A Java virtual machines targeted to the consumer end user device. For mobile devices, the virtual machine is called KVM i.e. K is for Kilo, to demonstrate the small memory footprint.
    • A group of libraries and API to use the device’s capabilities and other functionalities. These libraries and API’s are grouped separately according to devices’ type. They are known as Profiles and Configurations.
    • Several tools to accompany development, deployment and device configuration.

     The first two constitutes the runtime which is installed on the end-user’s mobile device to execute J2ME based applications. The J2ME platform provides a rich environment for development applications on mobile devices. These APIs are available on all significant platforms such as Nokia Series 40,60,80,90 and UIQ. [14]


    C. .NET Compact Framework

    The .NET Compact Framework is the latest initiative from Microsoft to compete with Java and BREW. The compact framework is a limited version of the complete .NET Framework and provides a runtime, the programming libraries and the development tools to create and execute applications on Smartphones running the .NET CF.

    The most significant benefit is that the programming model for .NET Compact Framework devices is identical to that used by the developer using .NET to build applications for desktop PCs and servers. The .NET Compact Framework implements a compatible subset of the functionality of the full .NET Framework, so developers use the same techniques to achieve similar tasks, using the same developer tools, such as Visual Studio .NET. Prior to .NET, developing applications for Windows CE required a different toolset and programming techniques that were similar to Win32 development for the desktop but different enough to cause many companies to shy away from making the necessary investment in training development staff. Now desktop developers can easily transfer their .NET development skills over to developing applications for Smartphone devices, reducing developer training costs.

    The only problem with .NET CF is the lack of penetration in the market and subsequently fewer number of devices with pre-installed framework. Microsoft is trying to cover up this by partnerships with major handset provides such as Motorola and Orange.

    The .NET Compact Framework offers a very good level of application portability for developers across Microsoft Windows server, desktop, and mobile device operating systems, while J2ME potentially offers a level of portability across any operating system provided support has been developed for that operating system.

    There is a natural tendency for companies to want to adopt a single approach so that developers need only learn and maintain one set of skills. However, both environments offer mature programming for mobile devices and offer excellent solutions for developing distributed applications across the enterprise, from server to desktop to PDA.


    Selection of the right development platform continues to be a daunting task. Devices OS, software development kit (SDK’s) for the handheld device, communications gateway, middleware, application server, transaction processing, payment processor for m-commerce applications and integration into legacy ERP applications require careful analysis. We have seen more choices, more confusion, more incompatibilities and increased lack of understanding for the end-to-end application integration. However, this proliferation of application development tools will see some consolidation. More tool developers want to work to introduce mobile device specific and wireless-specific support in application servers like IBM’s WebSphere, Oracle 9i and BEA’s WebLogic. In fact, enterprise professionals should use this as a cue to select development tools.

    In terms of applications and applets running on mobile devices, Java’s J2ME became a preferred platform for development, over and above a number of other development platforms, including Microsoft’s Windows CE component of .NET. It garnered extensive developer support and is intrinsically a better choice for diverse hardware and software environments that exist in handheld arena. This trend will continue. Microsoft’s .NET initiative will gradually get more flesh, improve and become a serious option for Microsoft-centric environment.


    [1] CNet, “Wireless Jungle still waiting for its king”.
    [2] MobileInfo, “Mobile Computing Market Outlook Reports”.

    [3] Strategy Analytics
    [4], “Euro Q2 smartphone sales sky rocket”

    [5] Jonathan Allin, “Java, Symbian, and the Wireless Market: Questions & Answers”.

    C. Enrique Ortiz, “Introduction to Symbian OS for Palm OS developers”.
    (current 2003).
    [7] Martin de Jode, Colin Turfus, “Symbian OS System Definitions v.1.2.1”.
    (current August 2003).
    [8] Nokia,
    Developer Platform 2.0 for Series 40: Frequently Asked Questions”.
    (current 2003)
    [9] Nokia,
    Developer Platform 2.0 for Series 60: Frequently Asked Questions”.
    (current 2003).
    [10] Nokia,
    Developer Platform 2.0 for Series 90: Frequently Asked Questions”.
    (current 2003).
    [11] Symbian, “Symbian UIQ Product Sheet”.
    (current 2003).
    [12], “What’s NEW in BREW Version 2.0”.
    [13] QUALCOMM Press, “QUALCOMM Selects IBM's J9 CLDC MIDP-Compliant Java Virtual Machine on the BREW Platform”

    [14] ZDNet, “BREWing up Business”

    [15] Qusay Mahmoud, Learning wireless Java, O'Reilly, 2001, p.10.



  • How do you model concurrent systems?

    In this semester, I am studying a course titled "Concurrent and Distributed Systems". The main objective of this course is to model concurrent applications. We are using a modelling notation called FSP for describing concurrent processes. This language is developed by Jeff Magee & Jeff Kramer and demonstrated in their book "Concurrency: State Models & Java Programs". Apart from the language, the interesting thing is the tool written by them to model/verify the whole process. This tool is called Labelled Transition State Analyser (LTSA) and is available from the author's website ( . I dont think that this modelling approach is widely adopted and neither it is easier to learn, but I wanted to ask your opinion about any other modelling tools available for concurrent and distributed systems.



  • Visual XPath 0.3

    A while back, I made some changes to the Visual XPath tool but didn't get any time to upload it. Now, you can find the tool's description on it's own page and ofcourse you can also download it from here.

    To revise the purpose of this tool, here is a little description.

    “Visual XPath is a graphical way of generating XPath query results. It can also be used to generate XPath queries dynamically by select XML nodes shown in the form of Tree. You can also generate queries for individual attributes.“

    Although that is just a basic description but you would find much more in the utility.

    Changes made in this version:
    - Support for Verbose output (in addition to abbreviated output)
    - Open file from Command Line
    - Drag/Drop Xml files from Windows Explorer
    - Support for group queries in context menu
    - Show queries in the XPath Query Textbox instead of statusbar. Therefore the "Use Selected XPath" button is disabled because of the above feature.

    And now you can also integrate with VS.NET by the following steps:

    Step 1: Add to the External Tools

    Goto Tools->External Tools
    Add Visual XPath: Put $(ItemPath) in the Arguments text box

    Step 2: Map a shortcut key to this external tool

    Goto Tools->Customize
    Press the Keyboard button and then write "Tools.ExternalCommand(n)" in the Show command containing text box, where n is the sequence of the Visual XPath tool. You can get this number by selecting the Tools window and counting the external tools upto Visual XPath.
    The assign some shortcut key for this tools. I preferred Ctrl+Shirt+X, which is also available to use.