So let us start with this question, why consumers like Native apps so much.
Look and feel of the apps
Device Level Features (Camera, Geo-location, Accelerometer etc)
Access to resources (Contacts, Calendar and Files)
2D/3D Graphics Libraries (leverage hardware acceleration)
Touch events and Gestures
Pain points on the Native app side
App Store Approval Process
Revenue Sharing with Platform Vendors
No Cross Platform Support
Cost of development and Maintenance
What if I tell you, you can get all of these native app benefits and also overcome all the pains points using mobile Web apps, wouldn't that be exciting? I believe your answer would be an absolute Yes.
At this point in time HTML5 specification is still a working draft and will reach candidate recommendation stage by 2012. Nevertheless most of the browsers have already started supporting HTML5 features, if you want to find out what are the HTML5 features your browser is supporting, take a quick test using this site http://mobilehtml5.org/.
HTML5 can do a lot for you but let me try to cover some of the important features it offers
Simplified semantics (concise and easily readable)
In-built support for Video and Audio (no plugins required)
HTML5 based games - WebGL, CSS3 and SVG
Improved app performance
- Download JS in the background (Web Workers)
- Cache your entire application using Cache Manifest
- Client storage mechanism like Web storage and DB storage
- New Input type like Email/URL/Date
Access all device level features (Geo-location, Camera etc)
Does that really mean that Native apps would slowly fade-out in about 2 to 3 years? Not really, though the dominance of Native apps over Web would even-out to quite an extent. I believe content based industries would be more inclined to Web Apps while Gaming industry towards Native apps, Consumer industry would opt for both Native and Web app to have maximum customer touch points and Enterprises would go for HTML5 to reduce the cost and enable BYOD (Bring Your Own Device).
Though we say that HTML5 would enable build once and run anywhere, it has its own set of challenges to overcome; one would be cross browser compatibility on HTML5 feature-set, not all features are available on all browsers, and they are implemented as and when the specifications are out. If you are implementing HTML5 features make sure to test them on all top browsers and implement workarounds if they are not supported on specific browsers. Secondly the varied real estate across mobiles and tablets would mean that you still have to either tweak your layouts or implement UI themes based on the device display (nevertheless it is still much less work than building native apps for each of the platforms separately).
Finally, when it comes to new device based features like NFC, Web apps would always have some catching up to be done until those respective APIs can be accessed through browsers. And with lot more innovation to come-in on device level features, native would continue to have its edge there. Nevertheless I would say that Web App would be much more powerful than before and in most cases would act as a good alternative to Native apps.