Mobile native app using PhoneGap

Creating native mobile apps for iOS, Android and Blackberry platforms involves using a variety of tools and APIs. The issue has always been maintenance. Maintaining three different code bases is always a tedious task. Moreover there is a practical problem finding resources who have a knack of developing apps in all these platforms. It’s even more difficult trying to maintain three different sets of people one for each platform for the same set of requirements.
There are two popular frameworks available for solving these issues. PhoneGap and Titanium. I have worked pretty extensively with PhoneGap and but not Titanium though. I am planning to get my hands dirty with Titanium this month and will let you know my of comments on the same.
 Some points about PhoneGap.
  •  It’s a JavaScript library and set of tools that generate native executable files. 
  •  Compiles HTML5, CSS3 and JavaScript code that you write to mobile native apps. 
  •  Supports different mobile platforms. 
  •  Write simple JavaScript code to access native features like Camera, Accelerometer, Phone Service etc. 
  •  It’s usually used with jQuery Mobile and Sencha Touch 
Create simple pages using HTML5, CSS3 and PhoneGap JavaScript library and you get the native mobile executable files.
The main advantage of PhoneGap is single codebase and multiple output files. Making changes is very easy. It removes a lot of pain for developers in learning(It’s actually fun though :)) different APIs, different languages(Java, Objective-C) to build native apps. It saves lot of money for the companies involved in developing native apps for these platforms.
I have found that the disadvantage of PhoneGap is in it’s generation of native executable file. Lot of things happen behind the screen and developers are usually left scratching their head trying to figure out why it’s working or not working the way expected in different platforms. The same code that works fine Android sometimes behaves weird on iPhones. Lot of times I have felt I should have simply written code using the native platform APIs so that you have more control over the code, though it’s a costly affair.
To me, even after working with PhoneGap I could not call myself a native app developer because I didn’t know what was happening in the background, till I started coding using the native APIs. In fact, lot of times working with PhoneGap applications reminded me of working with EJBs (1.x and 2.x particularly) though the code is not as weird as EJBs here.
 Nevertheless PhoneGap is still a very good way to get into native mobile app development for beginners. You will definitely learn what is involved in developing apps for mobile devices.

My book in the shelves

My Spring 3.0 Black Book in the shelves of Chennai book fair 2012.


Mobile native apps

I have been developing applications that run on the mobile platforms for quite sometime now. The applications are developed for iOS, Android and Blackberry devices. For getting started on this mobile apps development, there are certain basic items that a developer needs to know.
Simply put, a mobile native application is an application that runs on a mobile platform and makes use of the native services like caller service, camera, accelerometer etc., of the mobile.
The application is developed using the mobile platform specific API, built and installed in the mobile device.
This application can be made available for the general public by distributing it in the respective repositories.

Here is a simple table that shows the language, SDK, IDE, executable file and the distribution store for Apple, Android and Blackberry devices.

Device Language IDE SDK Executable file Distribution store
Apple Objective-C XCode iOS SDK .ipa App Store
Android Java Eclipse with android plugin Android SDK .apk Market
Blackberry Java Eclipse with blackberry Java plugin Blackberry Java SDK .cod App World

So to develop an android application, install Eclipse and an Android plugin for eclipse, download the Android SDK, write code in Java using Android API, and you get a .apk executable file that can be hosted for public use in Android Market.
If you have to build an application that can run in all these platforms you will land up maintaining three codebases. Is there a way to avoid it? Yes, you have PhoneGap for that purpose. I will post an article about PhoneGap later.



I have decided to take a plunge into the blogsphere, though pretty late by the industry standards by posting a series of articles on mobile apps.
Let’s crack some real code and have fun.