Choosing a mobile development strategy
Mobile Programming Models
Web
Web applications on mobile devices developed using the web model are accessed using a mobile browser.
A primary advantage of the web model is its multiple platform support, allowing your app to reach the broadest audience of mobile users. The code written using standard web application development languages can deliver a similar end user experience across multiple devices and operating systems. The web model approach also permits your development team to be more agile in addressing and fixing problems. Updates to the mobile application can be made easily over the web as opposed to having to release an update through the App Store for iOS apps and Google’s Market Place for Android apps.
Despite the potential of web technology in the mobile arena, there are limitations. One challenge facing developers is emulating the user interface and experience of a native application within the browser and providing cross browser compatibility. It is worth noting, however, there is a growing ecosystem of third party tools and frameworks such as Dojo Mobile, jQuery Mobile, Zurb Foundation, Less Framework 4, and ResponsiveJS providing developers with solutions to common interface problems. Web apps cannot access all of the device’s hardware and software, such as the address book or the notifications in non-webkit supported browsers. Creating a hybrid application, discussed in the next section, can circumvent these disadvantages.
A web approach is ideal if you are trying to reach the largest audience and not isolate a subset of your user base. The web model is also optimal if development and maintenance costs are paramount. Web development skills are more common than native development skill sets. Many organizations already possess in-house developers with experience in web application development.
Hybrid
Hybrid applications are programmed using the same web technologies as the web model, but are packaged and distributed as native applications. A hybrid application is essentially a web application wrapped in a native shell. Hybrid applications can leverage a Web Developer’s existing skillset and tap into a limited subset of the device’s native hardware. Several popular mobile web application frameworks are PhoneGap, Sencha Touch, and Appcelerator Titanium.
There is a caveat, hybrid applications must still be compiled and deployed through the target platform’s method of distribution. For instance, to distribute your app through the Apple App Store, you would need to build and compile your application using XCode and adhere to Apple’s guidelines and clandestine approval process. To target Android devices, you would further need to compile and distribute your application using Eclipse and the Android SDK then distribute your application in Google’s Market Place. It is worth noting, Adobe’s PhoneGap Build system enables developers to upload their assets (HTML5, CSS, JavaScript) to Adobe’s Cloud service and have their apps compiled using the latest PhoneGap SDK.
A hybrid approach is recommended if your application requires access to native functionality such as the device’s address book, or file system and it is essential for your application to target multiple platforms in addition to long-term maintenance and feature enhancements.
Esri’s ArcGIS API for JavaScript can be used to build hybrid applications. The same workflow for building your application using the web model can be applied to the hybrid model. You would import the compact build of the Esri JS API and any additional libraries (Dojo, jQuery, etc). Cascading style sheets can still be used to apply styles to your application’s user interface. Testing your hybrid application would require running it in a simulator or a device.
Native
Native applications are binary executable programs installed on the device. There is a different SDK for each mobile operating system. Native application development must use a language specific to the platform in which the application is deployed.
Although the native model excels in performance and low-level device hardware access, a critical disadvantage of native development is portability. Code written for one mobile operating system cannot be reused for another mobile operating system. A team would need to learn multiple programming languages, software development kits (Esri offers the iOS, Android, and Windows SDK) and manage several codebases. This makes development and maintenance potentially costly and time consuming.
The native model may be the best approach for your organization if the user interface requirements are strict and the native functionality essential.
Another scenario would be a case where organizations intend to only release their app to a subset of the target audience, and therefore target only a single mobile OS. For example, consider a private internal application only available to employees issued a specific mobile device (i.e. iPhone). This would be an instance where it may not make sense to develop for multiple platforms.
The following table summarizes some of the benefits and limitations of each of the three models and also serves as a decision matrix in helping you chose the most appropriate model for you application.