Mobile applications, in general, are software applications that run on mobile devices and platforms and perform predefined functions, often with the help of simple user interfaces. Most mobile phones come with several built-in applications from the manufacturers. Some common examples of built-in mobile applications include messaging services, games, calendar, alarm clocks, calculators and organizers. According to the Mobile Marketing Association, mobile applications can be divided into the categories of communication, games, multimedia, productive tools, travel and utility features.
Apart from the built-in applications, many mobile phones today also allow customized, user developed applications to be developed and installed on them in order to provide specific functionalities. These customized applications can be developed by the users themselves or are often available for download with or without a cost on the internet. The extent of the development and installation depends on how much of the source code is shared by the manufacturers. While some manufacturers like Apple retain high levels of control over their source code, others like Google have relinquished control of their source code to the pool of open source developers. The restricted access model is known as “Cathedral model’ while the open access model is known as “Bazaar model”. Consequently, in the bazaar model, developers can access and contribute towards the construction of the mobile platform as well as individual applications. Irrespective of the model, mobile applications can run on a variety of platforms and environments and are developed using various programming languages. One of the most popular mobile application development platform is “Android”.
Android is an operating system developed by Google in conjunction with a group of technological companies known as Open Handset Alliance. It is an open source, interoperable platform which runs on the Linux kernel. Since the platform is free and open source, there are several application libraries made available to developers to aid in development. For instance, the graphical elements in applications are supported by OpenGL, data access is supported by SQLite and browser support is provided by Webkit engine.The runtime for Android applications is provided by Dalvik Virtual Machine and is optimized for mobile applications. Android applications can be developed using the open source software development kit (SDK) which consists of an emulator, debugging and profiling tools and an Eclipse IDE plugin. The software development kit is free and available for download from the internet for different operating systems. The latest version of the SDK is 4.0 which provides new features such as a more flexible user interface, a direct path for efficient multimedia streaming, enhanced camera features, new codecs and components. All the elements of the SDK, libraries, kernel and runtime together make up the architecture of Android.
The top layer of the architecture consists of the built-in applications available on most mobile phones. The application framework provides views and APIs (Application Programming Interface) which enable the developers to access hardware and background services. The framework provided to open source developers is the same as the one used by core applications. The libraries expose various programming capabilities to the developers. Some important libraries are “android.util” for utility services, “android.os” for operating system access and “android.graphics” for graphical support. The runtime consists of the core libraries and the execution environment and the kernel manages all the core functionalities such as security and memory management. All these parts come together to provide a platform for application development.
Applications developed for the Android platform are known as “native apps” and are typically developed using the programming language java. They are installed on Android phones and owing to the open technology, both core and customized applications can access all the resources of the phone such as its speakers, camera and Bluetooth. Similar to java packages, Android code and any related files are compiled together into Android packages ending with .apk. Android applications are made up of four components – activities, services, content providers and broadcast receivers. Activities are the various tasks within an application with each task/activity represented by a single screen. The various activities interact with each other in a coherent manner to provide a particular functionality. Services are the processes which run in the backend to support the execution of various activities. They do not have a frontend user interface. Content providers manage the application data using various storage mechanisms such as SQLite databases or other file systems. Finally, broadcast receivers are components which react to application level events and broadcast messages. The components of different Android applications can interact with each other to give a seamless feel. In an Android application, activities, services and broadcast receivers are bound to other components as well as initiated using asynchronous messages called “intent” while content providers are initiated using a request called “ContentResolver”. Before being initiated, the components have to be declared in a manifest file called “AndroidManifest.xml”. The manifest file also deals with any access or permission issues related to hardware and software elements. All the hardware resources, software, data and code together form the installable package which runs within a sandbox on the device when installed. Each Android application runs in its own process. The Android development platform is free and open source, and hence developers get a lot of resources and tools to develop the applications. Overall, the advantage of Android development platform lies not just in freedom, low cost and flexibility, but also in the support that developers get.