HTML5 Vs. Native
When developing an application, engineers in the commercial world need to consider the ever-growing market of mobile users. Tablets and smartphones are here to stay, and now struggling desktop giants like Dell and HP have to face what USA Today calls “… new mobile reality being led by Google, Apple, and Samsung.”
But there is still much debate within the community about the most effective way to go about developing for mobile. The way I see it, developers have three choices:
- Develop a mobile-optimized website for an entirely browser-based experience
- Develop a native application for iOS, Android, and any other targeted mobile OS.
- Develop a hybrid application, that is, a mobile website wrapped in a native app “shell.”
There are arguments for any of these approaches, and as all engineers know, different tools are best for different situations. But in general, which strategy is best?
Personally, I think the choice should depend on what you’re trying to accomplish. If you have an app that needs a constant connection to the web, it’s probably better to just develop it in HTML for the code reuse and cross-platform compatibility mentioned above. Lots of banking apps use the hybrid model, embedding a website in a native “shell,” and I think it’s silly. Why waste the time and effort fixing bugs on all these platforms when users can just as easily bookmark your mobile site for the exact same functionality? On the other hand, if you can make your app more responsive by caching data on the device and then “phoning home” to the web when it’s necessary, native might be a more attractive option.
Also, I still believe that if you want to use device hardware, native apps do a much better job than HTML5. This certainly leads to a fragmented code base, but maybe someday there will be some sort of language that can be compiled into many native device languages.
I solicited opinions from fellow engineers here at ElevatePoint, and here’s what they had to say:
It’s clear that there is a good deal of diversity even within our company, and there may not ever be a consensus on this matter. However, by examining the issue, it’s possible we can find some best practices and use cases!
What’s your opinion?