Your Development Options for Mobile

Where We Were

Eleven years ago I consulted for a small startup. We were implementing a crazy (for those times) idea: trying to find a way to empower physicians by giving them a mobile device for capturing data they “generated” at their workplace through the day. That data would be invaluable when preparing a bill with the right total, staying on track with appointments and prescriptions or replacing piles of paperwork the hospitals were buried in back then.

What options did we have at that time? Palm was about the only technically and financially viable option for that type of business application. One had to build a client application in straight C++, but in order to move the application data (and code) back and forth between the server and the client you would have to stick the device into its cradle and run a cumbersome synchronization process. Development was a memory leakage debugging nightmare and emulators were half broken, but the results still amazed: even at the time of testing with the customers in the field, these mobile applications saved hospitals real money on billing.

Where We Are

Eleven years and a couple of IT booms later, the business feels much stronger about going mobile. Consider the immense number of mobilized human-facing business applications in the industries ranging from Healthcare, Finance, and Education… to Utilities, Logistics, and you-name-it. The demand is very high. In order to make applications and entire suites accessible to the largest possible user base and outrun the competitors, companies migrate their clients – from desktop standalone and in-browser platforms like Silverlight and from the retired mobile solutions like the old Palms – to the wave of Android, iOS, WP7, and new BlackBerry smartphones and tablets.

Compared to the old days we find ourselves facing a totally new mobile hardware and technology landscape. Now that we can choose from a variety of options, making a choice has become a real challenge in the aggressive “Time-to-Market is a must” environment. Selection of the development approach and platform will affect:

  • What features the application can access on the target mobile platform;
  • How portable across the platforms it will be;
  • What kind of performance and usability can be expected;
  • Maintainability costs of the solution;
  • If there is a single solution to build or if each supported platform will require a separate application based on a different language such as Java or Objective C and different developer skill sets.

And of course there are hybrids making the picture even more complicated.

Compare Before You Choose

To make an intelligent choice both with the prospective of the business and with technology evolution, it is necessary to compare the most prominent options available.

In this article I will discuss the following platforms:

  • In-browser HTML5 Client. The application is implemented in JavaScript/HTML5/CSS and is served as any regular web application to execute in the mobile browser.
  • PhoneGap HTML5 Client. The application is implemented in JavaScript/HTML5/CSS and is wrapped into a native container to deploy and run as a native application on the mobile platform.
  • Adobe Air Client. The application is implemented in JavaScript/HTML5/CSS/Flex and is compiled to run with the Air virtual machine. For iOS Air is deployed as part of the application.
  • Native/HTML5 Hybrid Client. This is a regular native application implemented with Objective C (iOS) or Java (Android). Part of the functionality can be implemented in JavaScript/HTML5/CSS to be cross-platform. This part is rendered in the application using the native Web View component.