Building native applications for mobile devices is like building a ‘Client-Server’ application which was popularized in the 90′s and 00′s with the explosion of personal computers. While this trend leveraged the fact that an application can use the computing power of the client device and provide better user experience and performance. However, from a maintenance perspective this was a nightmare. I still remember the “DLL Compatibility” issues driving me and my team crazy when we were deploying these applications in an enterprise environment and having to update/upgrade the application frequently. It generated a lot of call volume to the support teams. Combine that with the lack of good collaboration tools and you have a perfect storm whenever there is a new release.
The reason I bring this up is that the web has changed this whole ‘Client-Server’ paradigm and drove the application development model to adopt web-based architectures. With respect to Mobile Application Development we are looking at another such paradigm shift where there should be more and more applications built using ‘HTML5′ based app development for mobile devices. Just as in the case of Client-Server apps, ‘Native Apps’ for mobile devices provide a lot of power for developers to build apps that provide better user experience and performance, but it is a maintenance nightmare and also tend to increase the deployment cycles. A ‘HTML5′ application that follows the “80-20″ rule and uses 20% native code will provide greater flexibility by delivering almost all the advantages that a ‘Native App’ would. Plus, it also fits into the “Build Once Deploy Anywhere” model where the app can be deployed to multiple mobile devices (iOS, Andriod, Blackberry, Windows Mobile etc.) with minimal changes (to the 20%) of the native code (all the HTML5 code doesn’t need any platform specific changes).
This approach is being recommended by many analysts, thought leaders and vendors. It would be interesting to see how many developers adopt this approach and accelerate the shift in Mobile Application Development paradigm.