While mobile computing has caught the attention of application developers, there has been very little work done to examine the programming ease of these technologies. Here we will take a look at two of the most widely available mobile development environments – Android and Windows Mobile and explore and assess these options from a developer’s perspective.
Android was released by Google in 2007, as an open source platform for mobile software development for smartphones. The Android platform was released as part of the Open Handset Alliance. The primary aim of this alliance was to set up open standards for smartphones. Android is basically a Linux based, open source operating system for mobiles. As a mobile operating system it allows developers to create managed codes in Java, by using Java libraries developed by Google. Not only does Android provide a mobile operating system including a development environment, it also offers a custom virtual machine known as the Dalvik Virtual Machine for running applications as well as acts as the middleware in between the operating system and the code. When it comes to application development, Android facilitates the usage of 2D as well as 3D graphic libraries, advanced network capabilities such as 3G, Edge and WLAN and a customized SQL engine for continual storage.
Developed by Microsoft, the Window Mobile is an operating system for mobile devices. Based on the Microsoft Windows CE 5.0, Windows Mobile is used as an operating system on many smartphones, PDAs and touch screen devices. Windows Mobile facilitates the creation of custom written applications in managed as well as native codes. The Application Programming Interface (API) in Windows Mobile is extensible and has rich features along with a programmable layer. Besides that Windows Mobile also takes advantage of the capabilities provided by Microsoft.Net environment.
We will compare these platforms and closely examine their strengths and weaknesses. The platforms will be compared on the basis of implementation and performance aspects as well as developer support. We have chosen these criteria for the comparison as they represent the most important aspects when it comes to mobile software developers.
We will use persistent storage as the basis for comparing the implementation aspect. The technology used for persistent storage in mobile technology varies between various mobile development environments. Both Windows Mobile and Android have the ability to use an on-device database which facilitates easier manipulation as well as extraction of data. Also, as far as local file storage is concerned both environments support memory cards for additional storage space. However, the difference lies in the way the storage space is exploited. While Android cannot install applications on memory cards, Windows Mobile allows it. Both Android and Windows Mobile platforms have a relational database. Also, in both the platforms the libraries have quite a few useful persistence features. Once the libraries have been initialized, access to database is available via an object oriented interface which can be easily accessed by developers.
Performance figures are important for both users as well as developers. The performance comparison of the two platforms will be carried out based on the file size. The basic purpose of measuring file size is to get a better idea of the configuration as well as the run time dependencies that are included in packaged applications.
Android applications come packaged in apk (Android Package) files. The .APK file generally has a group of .DEX (Android program files) files, which operate like a single application file for usage within the Android platform. The .APK file is basically the compressed version of the contents in the ‘Androidmanifest.xml’ file.
Windows Mobile applications make use of cab-files for application packaging and deployment. The first step while making a distributable file, involves packaging the application in a CAB (Cabinet) file. This CAB file can be deployed to other devices where it can be expanded and installed. A CAB file is basically an executable archive which contains the application, resources, dependencies like DLLs and other resource files.