(Image Credit: iStockPhoto/andresr)
There’s always been something of a philosophical discussion over the efficiency of developing native apps. The argument follows that native apps give you access to a platform’s full functionality helping you to manipulate built-in capabilities to create sophisticated applications. Conversely, there is a popular conception that web apps are a stop-gap, which may be easier to run in the browser, but lack the quality of native apps.
In other words, if you work on the UIKit team at Apple, this article is not for you. If you work on the kernel for Windows, this article is also not for you.
It’s all about quality vs. scale
To create a great application and ensure that it gets into the hands of as many users as possible, it needs to scale for as many platforms as possible. But, native code limits scalability. Two of the most popular mobile platforms for native apps are written in different languages: Java for Android and Objective-C for iOS. Even if you’re proficient in both languages this means having to re-write the code. It’s double the work. Technology silos just don’t work in the long run.
This is where web apps prove their worth. They can scale across any platform, and any device, but without being able to access certain native device functions like the camera or geo-location, web apps in the past have limited app capability. To overcome this issue, web developers often use hybrid applications (i.e. Cordova/Phonegap) so that they can still use their web knowledge and almost build a native mobile application. They key word there is “almost”.
Hybrid applications are good enough for a lot of scenarios, but also inadequate for a sizable share of them. Hybrid application performance suffers as applications grow in size. We spent a lot of time trying to debunk the myths that HTML5 on mobile is too slow to be good. The honest truth is that “good enough” just doesn’t cut it for most.
Change is on its way
Do you think native code is becoming redundant for most scenarios? Share your thoughts in the comments.