Three Different Flavors of Mobile Development

September 21, 2015
cgutjahr

When looking at developing a mobile application, one of the main things to decide is HOW you are going to develop it. Much like the ‘non-Mobile’ work there are different ways to ‘skin a cat’ ( I know this might translate poorly to my non-American friends ) when trying to figure out how to develop your application.

From our perspective there three main options when developing mobile applications:

Native
Specific to a give mobile platform (iOS or Android) using development tools and language that the platform supports (Xode and Objective-C with iOS and Eclipse and Java for Android)
HTML5 Web App
Standard web technologies (typically HTML5, JavaScript and CSS). A cross-platform mobile applications that work on multiple devices
Hybrid
Embedded HTML5 apps within a thin native container

Native Development

A mobile application is written specifically for mobile devices and performs a specific task. Its an app that is specifically designed to run on a devices operating system and machine firmware. It would be impossible or ‘nearly’ impossible to run a native app on more than one platform
Benefits
Increase performance – Active access to processor and graphics processing power
Native Hardware and Software Access – Native APIs exist to access specific hardware ( GPS, Camera ) and software ( Email, Calendar )
Offline functionality – Apps live physically on the device and can be run offline

Negatives
Device specific support – Apps written on one platform need to be re-written to support additional platforms
Deployment – Native apps need to be ‘deployed’ to devices and any code changes need to be versioned and redeployed
Development Skills – Development skills are not typically available and need to be learned or hired

HTML Web Applications

HTML5 Mobile solutions use standard web technologies – typically HTML5, JavaScript and CSS. HTML5 Mobile apps are web-applications accessed via a browser on the mobile device. The focus is on the HTML, JS and CSS usage so backend technologies (Java, .Net. ABAP ) is not really the focus

Benefits
‘Write Once Run Anywhere’ – Apps are typically able to be written a single time and will be supported on multiple devices
Distribution to devices is as easy as accessing a website and not limited to distribution via a predefined process
Changes to apps do not require re-distribution to devices but are automatically available to devices

Negatives
Limited access to device hardware ( GPS, Camera etc )
Limited graphical capabilities since developers are limited to web-based technologies and network performance
Devices need to have access to the internet to function. HTML5 offline functionality is not as function as users would expect

Hybrid Applications

Hybrid Apps are web apps, primarily built using HTML5 and JavaScript, that are then inside a thin native container that provides access to native platform features. Hybrid apps use a web view control to present the HTML and JavaScript files in a full-screen format, using the native browser rendering engine (not the browser itself.

Benefits
‘Write Once Run Anywhere-ish’ – Apps are typically able to be written a single time and will be supported on multiple devices
Native Hardware and Software Access – Native APIs exist to access specific hardware ( GPS, Camera ) and software ( Email, Calendar )
Offline functionality – Apps live physically on the device and can be run offline

Negatives
JavaScript and HTML5 are primary development mechanisms
Limited graphical capabilities. Not as good as Native, but not as limited as HTML5 Web Apps
Since hybrid apps do not run within the native OS, they have some technical limitations
Distribution needs to be done via the same mechanism as Native Apps