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 my 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

This post is meant to only be an introduction to the concepts. I will plan on following up with more detail around different methodologies so let me know what you would be interested in learning more about.


To report this post you need to login first.

3 Comments

You must be Logged on to comment or reply to a post.

  1. Stephen Kringas

    Thanks for the summary Craig.

    Can you clarify one point though –

    In the Hybrid Approach you listed “JavaScript/HTML being the primary development mechanism” as a negative; can you expand on that?

    The only reason I ask is many clients would view this as a benefit because you can reuse existing / generally cheaper skill sets for mobile development.

    Cheers,

    Stephen

    (0) 
    1. Craig Gutjahr Post author

      Hi Stephen,

      I guess my listing it as a negative was a personal observation. I know that JS development has come a long way in the past 5-6 years, but I don’t think anyone would consider the development / debugging tools or ability of JS equal to JAVA, C++ or .Net

      Also, remember that JS ‘compiling’ takes place on the CLIENT machine ( Browser ), so the performance of the app would be dependent on the performance of the browser on the client machine. So all of that expensive hardware powering the backend services, would not be utilized.

      Thanks for the comment..

      (0) 

Leave a Reply