Native apps vs HTML5 apps – a never-ending(?) debate

3 minute read
December 23, 2012

During the last five months I’ve been writing my master’s thesis about HTML5 in mobile application development - and how it compares to native application development technologies and APIs. After reading dozens of articles, blog posts and papers, after writing hundreds of line code and around 80 pages of text and after doing hours and hours of research and analysis, the thesis is finally ready and will be published shortly. However, since thesis is a scientific publication, it includes just facts, results and hopefully objective analysis – nothing about my opinions and personal preferences. In this article I’ll describe what I think about the “HTML5 vs. native” debate.

Below I list a few facts. I don’t justify these here – if you disagree, read my thesis. If you still disagree, I’m fine with that.

  • Native apps work better in overall, especially in graphics rendering and touch responsiveness (i.e. real-time gaming)
  • HTML5 partially solves the device fragmentation issue. However, not completely. Manual work is still needed for optimizing the app for a specific platform.
  • Lack of functionality (such as device/sensor access) is not an issue for HTML5/hybrid apps anymore.
  • Web/hybrid apps do not consume resources any more than native apps - actually they may consume resources even a bit less.

For me, it seems that the biggest problem of web/hybrid apps is poor responsiveness. Users who use smartphones daily, expect the response from app immediately once the touch is registered. Users may get frustrated, since the response from application may take a second or two, “smooth graphics”, such as animated transitions are not as smooth in web/hybrid apps as in native applications. None of these facts seems be a big deal, but they are. If the UI is laggy and sloppy, users feel that the whole application is buggy and nothing works, although there might not be anything wrong with the functionality.

However, I’m not bashing web apps. They fit well for many purposes, but not all. Web apps are faster to write and deploy than native apps. Implementing cross-platform support is very low-cost and fast compared to native apps. Performance of JavaScript has improved a lot during last years. I think it is actually pretty nice language to write and there is a bunch of good libraries and extensions - such as jQuery to ease and accelerate the development. Overall, there are many real and practical advantages in web technologies.

In theory, I don’t really like the trend that browser is becoming the platform, HTTP is becoming transport layer and web services are becoming applications. It is not optimal and it causes a lot of overhead when practically all user-land stuff is written in JavaScript and interpreted in real-time. The lower level programs are written, the more efficient they are, since there is no need for virtual machines, sandboxes or interpreters. As The Computer Language Benchmark Game shows, C is a LOT faster and more memory-efficient than JavaScript. On the other hand, writing applications in C requires a lot more code than JavaScript, thus it also requires more work, which costs money. And currently processing power and memory is cheap. And no, I don’t like this trend either, but money talks.

Something that I like in “web as an application platform” -trend are open APIs. Once HTML5 has replaced Adobe Flash and Java, there is no longer need for those insecure and crappy proprietary plugins. In practice, you can watch Youtube and play online games despite your operating system. And you can finally do that by running 100% free software. Well, I’m no longer such an idealist, but it still feels better.

To sum it up, there are two sides in this HTML5 versus native -debate. I think that we need both, now and in future, in desktop and in mobile. They are not mutually exclusive technologies, and both should be used when it is appropriate. HTML5 is great as a replacement of old, crappy and proprietary web technologies, as well as in rapid mobile application development. However, native code is something we always need, since it provides the best result in performance-critical applications and systems.

Leave a Comment