Mobile programming and systems

How to program a mobile device? Which framework to facilitate the task? Which programming language to use? Can we make the application portable? Which OS to choose?
We will try to answer all these questions.

The mobile market

The number of users of advanced mobile, running applications created by third parties, is already higher than the number of desktop computers. It is therefore evident that a programmer needs to focus on this market.

Do not hope on compatibility with desktop systems (although emulators are provided to develop on Windows, Mac, Linux). The interface screens are different and unless it is limited to applications in the browser, we should rethink the application and expect to use different APIs.

Mobile operating systems and programming

The languages and tools are different depending on the operating systems. We will show them but will not go into details of applications structures for each system, they are described in their development centers.

iOS

The iPhone system preferably operates applications written in C or Objective C, or HTML 5.

After banning the use of third party frameworks (like Flash) to create an application that is accepted on the AppStore, on September 9, 2010, Apple has changed its policy and abandoned any restriction on the tools used to build applications for the IOS.
The 3.3.1 term, previously said that for an application to be included in the App Store, the software must be written in Objective C, C++ or JavaScript. No over-layer and no framework was allowed. It is now history.

Tools

Cocoa is the development tool for Apple and C-like language, with the UIKit framework.

Android

The Google system now has a very broad installed base, equal to that of the iPhone in the U.S. and is therefore one of the two privileged markets for the developer.
The Android SDK provides APIs for building applications. It includes an Android mobile emulator to test the applications on Windows, Mac, Linux.
The ADT plugin for Eclipse adds an IDE.
The NDK, N for native, adds native code, so written in C or other language compiled into binary.
The first programming language is Java, but thank to SL4A it is possible to use another language such as PHP.

Tizen

It is  the successor for Meego, supported by Intel, Samsung, NEC, and many other firms, it uses HTML 5 for the interface and  Linux as backend. The name is probably an abbreviation of "citizen".
He succeeds Limo too, an initiative of the Linux Foundation for a mobile Linux-based system.
It is an alternative to Windows 8 that will run on tablets and will support applications for Linux, with Qt and GTK. If Microsoft sticks to its intention to charge 30% of applications in Metro, Tizen will surely interest publishers. Applications developed in HTML 5 and WAC will work on all devices.
Its availability with an SDK it planned to first quarter of 2012.

Windows Phone 7

Unlike the iPhone, the Microsoft operating system favors writing application in C#, but you can use C++ also. Applications run on a light .NET version.
The interface can be built with Silverlight or XNA, a framework for games.

Blackberry OS and Qnx

OS 6 from RIM supports multitouch. Programming is done in Java or with the SDK for Web applications.
QNX is used on tablets and allows to run Android applications, provided they are accepted on the App World distribution platform. Will succeed to it  Blackberry 10, a unified platform for all models.

WebOS

WebOS is often considered the best OS for smartphone. The Palm company was acquired by HP and we were expecting webOS having a big future because HP said the OS is the main reason for the acquisition and want to use it on netbooks too and from 2012 as an alternative system installed on each computer (it sells 60 million per year).
However it is based on WebKit and does not access directly the native system, and it is slower than other OS for mobiles.

On August 19, 2011, HP announced the end of smartphones and tablets with WebOS. And December 9, 2011, the system becomes open source, which raise its interest, but to justify developments, several manufacturers must commit to using it.

WebOS could be bought, especially as Google became a competitor on the Android market and Microsoft comes close to Nokia that do Android and WP7 becoming less attractive for manufacturers. But they can also move to Meego, which has already begun equipping netbooks.

Based on Linux, webOS supports most of the tools for Linux such as SDL for games. WebOS supports HTML 5, JavaScript, CSS. It is multitasking.
The PDK allows to add native code, written in C or C++ to applications. The SDK includes a simulator to test applications under Windows or Linux, and Mojo, an Ajax framework that includes widgets. You can add your own widgets.
Mojo is being replaced by Enyo, a faster framework compatible with HTML 5, suitable for tablet PC.

Systems to be abandonned

Meego

This Linux system (hosted by the Linux Fundation) results from the merge of Intel's Moblin and Nokia's Maemo.
Many other manufacturers have joined the Meego consortium, this system works on mobile phones, tablets and netbooks. A common code will be used for all these devices.
Although Meego is not mature, many manufacturers have chosen this system for their new notebooks preferably to Chrome OS whose Web-only orientation does not convince really.

Meego uses the Qt framework and can be programmed with the Qt Creator IDE. The Meego UI Toolkit is a layer added to Qt, it is complemented by Handheld UX for mobiles and Neetbook UX for tablets and netbooks.
The programming language is C++.

 

Symbian

Symbian 3 is an open source platform. The PDK (Product Development Kit) can be downloaded to build an application. The ADT (Application Developent Kit) provides the tools to develop an application running on Symbian.
The languages used are C++ with Carbide, Java ME with Eclipse Mobile or NetBeans Mobility, Python with PyS60, Ruby with Symbian Ruby, Flash with Flash Lite, widgets using HTML 5. The.NET support is uncertain.

With the Nokia Qt SDK, we can develop and test applications on the desktop that will run on Symbian and Meego.

Symbian will gradually be replaced by Windows Phone and probably a new Linux-based OS for cheap models. The development of Symbian was transferred to another company, Accenture in June 2011.

Portable development tools

They now may be used on the iPhone providing the applications do not load executable code as Flash can do.

Titanium

Interface Development for Android or local applications. It has its own SDK, an API interface to the system, which facilitates the port from one platform to another.

Unity3D

Unity is a development platform and Unity3D a specialized version for games. The API can be programmed in JavaScript or C #.
These languages are compiled into native language (ARM) for mobile.
The same applications can run on a browser, thanks to a plugin. They also work on Windows and Mac, over .NET.

MonoTouch

Produced by Novell, it is a version for iPhone and iPad of the Mono Framework. Applications written in C# are compiled and linked to the API of the mobile or tablet.
They will not be distributed on the App Store.

Widgets

These are simplified applications, operating directly in the interface of the mobile or inside other applications.
Do not be confused with widgets of frameworks, which are components of interfaces.
How to create and install widgets depends on each system.

The universal platform: HTML 5

HTML 5 is the universal platform, running on all phones without any adaptation of the code but with limitations.
Nokia offers a development kit to build portable apps without native code.
The App Store for the iPhone includes Opera Mini, a smaller version of the browser, dedicated to mobile. It seems that this browser is not a web application platform. Indeed, Opera Mini 5, if it supports SVG and CSS 3, has no support for essential components: HTML 5 forms, Ajax.
But Firefox 4 for Android supports 100% of HTML 5. As does the native browser.

More