Mobile application development

Mobile application development

Mobile application development is the process in which applications are developed for hand held devices such as personal digital assistants,
enterprise digital assistants or mobile phones. These applications are either pre-installed on phones during manufacture, or downloaded by customers from app stores and other mobile software distribution platforms.

Platforms supporting devices by multiple manufacturers

* Java ME This platform produces portable applications, although sometimes device-specific libraries exist, making them non-portable. It is often used to provide simple applications on feature phones. Applications (including their data) cannot be larger than around 1 MB if they are to be runned on most phones. They must be cryptographically signed in order to use APIs such as the filesystem access API. This is relatively expensive and rarely done, even for commercial applications. Java ME runs atop a Virtual Machine (called the JVM) which allows reasonable, but not complete, access to the functionality of the underlying phone. The JSR process serves to incrementally increase the functionality that can be made available to Java ME, while also providing Carriers and OEMs the ability to prevent access, or limit access to provisioned software.
* Symbian platform Designed from the start for mobile devices, the Symbian platform is a real time, multi-tasking OS specifically architected to run well on resource-constrained systems, maximising performance and battery life whilst minimising memory usage. The Symbian Foundation maintains the code for the open source software platform based on Symbian OS and software assets contributed by Nokia, NTT DOCOMO, and Sony Ericsson, including the S60 and MOAP(S) user interfaces. The platform is fully open source, mostly supplied under the Eclipse Public License. Over 300 million Symbian OS-based units have been shipped and Symbian holds more than a 50% market share globally.
* Android Android is a Linux-based platform from the Open Handset Alliance, whose 34 members include Google, HTC, Motorola, Qualcomm, and T-Mobile. It is supported by over 34 major software, hardware and telecoms companies. The Linux kernel is used as a hardware abstraction layer (HAL). Application programming is primarily done in Java. The Android specific Java SDK is required for development although any Java IDE may be used. Performance critical code can be written in C, C++ or other native code languages using the Android Native Development Kit (NDK).
* .NET Compact Framework Used primarily for applications on Pocket PC/Windows Mobile devices.
* Qt (framework) Qt uses standard C++ but makes extensive use of a special pre-processor (called the Meta Object Compiler, or moc) to enrich the language. Qt can also be used in several other programming languages via language bindings. It runs on all major platforms and has extensive internationalization support. Non-GUI features include SQL database access, XML parsing, thread management, network support, and a unified cross-platform API for file handling.
* BREW Used for deploying applications on CDMA devices (but also supports GPRS/GSM models). Distributed via a Brew Content Platform. Little penetration in Europe. BREW can provide complete control of the handset and access to all its functionality. However the power provided by native code with direct access to the handset APIs, has caused the BREW development process to be tailored largely towards recognized software vendors. While the BREW SDK (Software Development Kit) is freely available, running software on real mobile hardware (as opposed to the provided emulator) requires a digital signature which can only be generated with tools issued by a handful of parties, namely mobile content providers and Qualcomm themselves. Even then, the software will only work on test enabled devices. To be downloadable on regular phones the software must be checked, tested and given approval by Qualcomm via their TRUE BREW Testing program.

* Windows Mobile
* Palm OS Strong enterprise following in the important US market.
* Flash Lite Used for devices that support the Flash Lite player.
* Microbrowser based. Lightweight functionality provided via a web-interface

Platforms supporting devices by one manufacturer

* BlackBerry Supports push e-mail, mobile telephone, text messaging, internet faxing, web browsing and other wireless information services as well as a multi-touch interface. It has a built-in QWERTY keyboard, optimized for “thumbing”, the use of only the thumbs to type. The BlackBerry devices soon took a dominating position on the North American smartphone market. Also important for BlackBerry are the BES (Black Berry Enterprise Server) and the Mobile Data System (BlackBerry MDS).
* iOS (Apple) The iPhone and iPod Touch SDK uses Objective-C, based on the C programming language. Currently, is only available on Mac OS X 10.5 and is the only way to write an iPhone application. All applications should be cleared by Apple before being hosted on the AppStore. However, non-Apple approved applications can be released to jailbroken iPhones via Cydia or Installer.

[edit] Execution environments

Windows Mobile, Palm OS, Symbian OS and iOS support typical application binaries as found on personal computers with code which executes in the native machine format of the processor (the ARM architecture is used on many current models). Windows Mobile also supports the Portable Executable (PE) format associated with the .NET Framework. Both Windows Mobile, Palm OS and iOS offer free SDKs and Integrated Development Environments to developers. Machine language executables offer considerable performance advantages over Java.