by

The myth of the native app

This is a translation of a Dutch article I recently wrote for the the Enterprise Appstore platform. Shortly after writing this article, Appcelerator announced it’s next major release for Titanium. Though still in early stages, it’s very promising. No longer will they use a JavaScript interpreter like described in the article, but they will switch to a actual JavaScript compiler. I will write about these changes another time.

The myth of the native app

Apps are booming business

There are almost 2 bilion smartphones in use worldwide. Every day, 1.5 million Android smartphones are activated, compared to ‘just’ 300.000 baby’s being born. All App Stores combined hold 1.5 million apps. On average, we have 41 apps on our phones and use apps 150 times a day. That’s every 6 minutes! We invest 2 hours in using these apps every day, compared to an ever declining 3 hours for TV.

The browser-battle returns

Apple created two whole new markets with their iPhone and iPad. Apple is still leading, but Android has become the market leader when it comes to volume. However, there’s not ONE Android. Every phone manufacturer is free to use its own customized version. And since they all do, we now have about 28 Android versions running on thousands of different device models. Even without new players like Windows 8/RT, BlackBerry 10, Tizen, Firefox OS and Sailfish, this is a recepe for disaster not unlike the browser compatability problems websites have.

The dissapointment of HTML apps

Still, in response to the fragmentation of smartphone software and models, developers turned to HTML once more. Think of their solution like a full-screen browser, browsing a website stored within the same app. Facebook and LinkedIn amongst many others used this approach, but both returned to doing fully native again in the last year. On cheap phones with older Android versions in particular, the performance of HTML apps was poor and simply couldn’t offer the experience of a “real” (native) app.

What is native?

But what then is a “real” native app? Can we only call an app native when it uses the original programming language? Few people know there’s more then Apple’s Objective-C or Java for Android. Even Apple’s Xcode software allows you to develop using C or C++. All these are so-called “compiled” languages, which get processed to the device’s machinecode. Many popular languages like PHP, Ruby and JavaScript are “interpreted” languages. These languages are basically “read” by another compiled language. The popularity of these languages alone shows the advantages easily outweight the possible disadvantages of this extra layer.

Best of both

One of the advantages of using an interpreted language is that often a interpreter is available for multiple platforms. This allows you to develop an app for all these platforms, using the same language. By doing so, you only need to learn or hire one expertise and maintain one (partially) shared codebase. And because the language “talks” directly to the platform’s main language via the interpreter, it has potential access to all API’s and generates a 100% native, high performance interface.

Titanium

One of the solutions that uses this approach is Appcelerator’s Titanium. Titanium allows you to use JavaScript to build apps for both iOS (Apple), Android (Kindle), BlackBerry (10), Tizen and soon also Windows 8/RT. The software is free and open source. Appcelerator makes its money by offering additional payed services, mainly for larger enterprises.

And yes, Titanium is what I use. But now you know why!

Sources