As a mobile application developer I am often faced with the question: should I develop hybrid or native applications? Having produced a few mobile applications, I can tell you that one thing is clear: it’s not simply a question of which is better but rather an evaluation of criteria that determines which approach to take.
Application developers have many choices in languages and frameworks. New tools are emerging all the time that claim to have the best features or most comprehensive support. I’ve come up with a set of criteria that work for me to help determine which approach to use when starting a new mobile application. The decision is based on application features, development cost and support, and time to market.
|Device capabilities such as camera, voice, storage||Plugin access adds a layer of complexity||Direct access, faster, smoother|
|Native look and feel and gestures||The look and feel is emulated and the quality depends on the UI complexity and framework;|
sometimes different code paths are required per platform
|Built-in design and user experience patterns, per platform; defaults and templates are easier to use|
|Porting existing web applications||When users are already familiar with existing web applications and can easily move to a mobile device doing the same things||When re-creating the UI and functionality with all native elements|
Development and support
|API access to web or enterprise services||Reuse existing web technologies and services||Requires new native library code support|
|Complicated UI and error handling||UI transitions and layers of error handling can be hard to track||Native tools for UI layout and better code handling and debugging|
|Rapid multi-platform development and testing||Using a common source base for most of the application saves time on both development and debugging||Requires different code base and separate bug fixes|
The time to market is more sensitive in the mobile application space. It is important to find a good balance between how many app features to include and how long it takes to develop them. This depends on the product requirements and skill sets of the developers.
Some well-known frameworks for hybrid application, such as Apache Cordova and Dojo Mobile, are well supported in the IBM Worklight product. Frameworks for native application development are being established as more enterprise applications are built. The major platforms all offer extensive design guidelines and references for native application development.
Native applications are developed with platform-specific tools and languages. Each platform has its own development tool kit, best practices and design guidelines. Device-level access such as camera, voice and phone are direct access and in some cases faster processing. While it might be more cost effective to build a mobile application with a similar look and feel across platforms, that does not always make sense for the user. Users expect seamless, smooth interactions, which aren’t always easily achieved with hybrid code. After the initial learning curve with Java or Objective-C, the focus will be on quality of the application rather than difficulty of development.
Building a mobile application means choosing a “mobile first” approach—creating an application and user experience that accomplishes a task that takes advantage of the mobile device. It’s also an evolution as mobile devices become more primary in business and as a personal tool of choice. The users help drive what types of applications and development frameworks stick. Hardware improvements and maturity of development skills also change the nature of how mobile applications will be built.
In my next post, I’ll describe some real world applications and why I chose the different approaches in each case. What’s your opinion on the great hybrid versus native debate? Leave a comment below, send me a tweet @clu101 or connect with me on LinkedIn.