Small Town Coder

sharing code samples for desktop, web, and mobile

Choosing a Mobile App Development Strategy

Choosing a mobile application development strategy may not be an easy task. The strategy will depend on different factors including leveraging existing knowledge, strengths, tools, and what is the desired target platform. To add to the mix, there continues to be an ongoing debate as to whether or not to go native or build for the web.

What is a native device application?

A native device application is one that is built using development tools and programming languages that are specific to the target platform. Native applications developed for Apple iOS will use different tools and programming language than one developed for Android, BlackBerry, or Windows Phone. What this means is that a native application developed for iOS, for example, cannot be installed on any other platform. The application will need to be developed from scratch for each target platform using the development tools and programming language for that platform. This forces developers to maintain a separate code base for each target platform. Native applications are also packaged and typically deployed via a third party distribution service such as the Apple App Store, Google Play, BlackBerry App World, and Windows Phone Marketplace.

What is a mobile web application?

A mobile web application runs within a web browser and accessed via a URL. They are typically developed using HTML5, JavaScript, and CSS. Since the target platform is a web browser, the web application need only be developed once and can be accessed by any browser (mobile or desktop) that supports the latest web technologies. This flexibility and the ability to write once, run anywhere, comes at a price. Mobile web applications do not typically have access to any of the native device capabilities that native applications enjoy including hardware graphics, accelerometers, file system, camera, phone and messaging. Mobile web applications also require a persistent connection to the internet in order from them to be accessed.

What is a native mobile web application?

A native mobile web application is built using mobile web application technologies mentioned above but are packaged and deployed as native applications. These applications still run within a browser natively on the device but also have access to native device capabilities provided through a platform specific JavaScript API. This choice offers developers the opportunity to craft applications using advanced web technologies that can be deployed to many different platforms. Developers building native mobile web applications can share the user interface portion of their app with each target platform and need only maintain the portions of the app that are device specific.

I am a strong proponent of native mobile web applications. There are some excellent mobile web application projects currently in active development that are obscuring the difference between native applications and web applications. By using pure HTML5, CSS and Javascript, these projects support touch friendly user interfaces and familiar native gestures including tap and swipe. The jQuery Mobile Project, spawned from the desire and need to develop a consistent user interface for the mobile web, continue to evolve their framework to work seamlessly across all browsers on several devices with custom theme support and several UI controls. Sencha Touch is another popular framework with a powerful JavaScript API, a vast UI control library, custom theme support, and a native packager for iOS and Android.