Selecting a development platform is a big decision with significant implications on both short term and long term viability of a product. Probably the most interesting, current, development platform discussion is the HTML5 versus native mobile apps debate.

A high level comparison of the two options is outlined below:

Native Applications

HTML5

Functionality

Ability to leverage all device capabilities

Many limitations in access to hardware functionality. Frameworks, such as PhoneGap, can be used to access device capabilities not supported by HTML5.

Performance

Superior performance

Good enough for many applications

Development effort

Separate coding effort for each mobile platform

Build once, deploy (almost) anywhere

Learning curve

Need to master each mobile platform separately

Relatively short learning curve for web developers

Distribution mechanism

App stores

Search

Can be packaged for app stores

Upgrades

Required on each device

Not required. Users always have access to the latest functionality.

Maturity

Significantly more mature

Gaining traction

From my perspective, what it boils down to is this:

  1. If functional and performance requirements of your app can be supported by HTML5, go with HTML5. Smaller development effort and a shorter learning curve will result in lower overall costs and a faster time to market.
  2. If you are relying heavily on the hardware features, require performance beyond what HTML5 can offer, or are building a complex application where maturity of technology is a significant factor, go native.
  3. It is likely that the boundary between the two options will gradually shift in favor of HTML5.

Other posts on this topic

Historical Footnote

Five years ago I wrote the What technology platform to choose for development of mobile applications? post. It talks about J2ME, BREW, Symbian. Android and iOS are not mentioned – they had not been released yet at that time. Any guesses on what will be a preferred mobile development platform five years from now?

Related Posts

jQuery Mobile Tutorial Part I – Static Pages

jQuery Mobile Tutorial Part II – Dynamic Pages

jQuery Mobile Tutorial Part III – Managing Data