native app vs web app

App, short for application, is a term that has been used in IT for quite some time, but only became popular with consumers in 2008, when it was used in relation to mobile devices (PCMag 2013 [online]). Different kinds of paradigms can be identified in the mobile app landscape: Native app vs web app vs hybrid app. Each has its specific purpose, advantages and limitations.

native app vs web appNative app

Native apps are specifically developed to run on certain mobile OSs (platforms), using an Integrated Development Environment (IDE) and Software Development Kit (SDK). Native apps need modifications to be able to run on other platforms, e.g., apps that are targeted for the iOS platform can only run on Apple devices such as iPhone, iPad, and iPod touch. For the 3 major platforms (iOS, Android, and Windows Phone), there are already 5 native platform languages: C/C++ can be used for iOS and Android, Objective C is used for iOS, C# is used for for Windows Phone, Java is used for Android, and Visual Basic.NET is used for for Windows Phone (Shackles 2012, p. 3). Native apps are installed physically on the device itself and are distributed through application stores that are also targeting specific platforms. Known stores are App Store (Apple), Google Play (Google), and App World (BlackBerry). Native apps are provided with complete access to device capabilities and benefit from hardware-accelerated performance, and are therefore often first choice for game developers (Pelletier 2013). Because of greater cooperation between native apps and their platform’s OS, local user data and application data storage like runtime, state or preferences are allowed, thereby enhancing speed since no online data transferring is needed. The source code of native apps is compiled unlike the source code of web apps, which is interpreted by the browser before being processed. Ergo, native apps always execute faster than web apps (Wagner 2013, p. 359). The major drawback of native apps is that they do not support cross- platform development and targeting all major platforms is a very elaborate process.

Web app

Web apps, often called HTML5 apps, are mobile versions of websites, especially designed with a device’s size in mind. Web technologies such as HTML5, CSS3, and JavaScript are used for the development of advanced client-side web apps. There are a number of reasons why developers have not fully adopted web apps (yet). The main reasons why native app developers do not prefer web apps are related to performance issues (45.72%) and limited hardware APIs (37.34%) (Visionmobile 2013, p. 22 [pdf]). The justification of these two arguments will become issues for debate since the W3C is working hard on web standards that close the gap on absent native features and platforms are making more APIs available to developers over time (Hales 2012, p. 20). A remaining difference is that web apps are not available to the user when there is no Internet connection present, although there is limited browser caching. Web apps are not stored on the device but run in a web browser on the device. They are not distributed through application stores, rendering them more difficult to sell (Kyrnin 2011, p. 407). On the other hand, the fact that web apps are not sold through applications stores has the advantage of not having to rely on store approval. Since web apps are actually web sites, they are easy to deploy, access, and update (Balkan 2012, p. 266). Although the user experience (UX) with web apps is different compared to native apps, these differences will become smaller over time (Rodger 2011). With the rise of the fourth generation wireless (4G), which is ten times faster than 3G mobile broadband, mobile devices can transfer data pretty much anywhere on a high speed (Mani 2013 [online]). But the main justification for the existence of web apps is that they are cross-platform. App developers are in favour of the WORA approach “Write once, Run anywhere” (Hales 2012, p. 20).

Hybrid app

Hybrid or hybrid/HTML5 apps are web apps that are ‘converted’ to native apps by a native wrapper and combine some of the advantages of web apps and native apps (Kyrnin 2011, p. 408). Hybrid app development tries to bridge the gap between web (HTML5) and native. They still rely on HTML browser rendering, but instead of using the platforms’ browser, the low-level browser shell (a web view control) is used to present the HTML and JavaScript files (Budiu 2013 [online]). So this thesis does not describe the burden of individual browser quirks. Hybrid app development frameworks allow native device-specific capabilities such as the camera, GPS, and accelerometer by bundling the ‘web app’ in an installable native shell for each specific platform. JavaScript is used for ‘calling’ these native capabilities. For web developers who are familiar with web technologies like HTML, CSS and JavaScript, hybrid app development is a great opportunity to get cross-platform apps distributed through mobile application stores without learning new native languages like objective-C or Java. Factors that play a role in choosing an app paradigm are: app requirements, business needs, development skill, and timeline (Koetsier 204 [online]). Most frameworks that allow hybrid app development are confusingly called HTML5 or web app frameworks because they also allow web app development. They become hybrid when a co-supplied wrapper or a wrapper technology like PhoneGap/Apache Cordova wraps them into a ‘native’ app.

Mobile Platforms

The devices and their specific Mobile OSs that manage the devices’ hardware and the apps that run on them are referred to as Mobile platforms. Since the introduction of the first PDA and its Newton OS by Apple in 1987, a lot has changed (Helas et al 2012). There is a generous amount of application platforms on the market today. Some are more dominant than others. The protagonists in the Mobile OS market are: Android (Google), iOS (Apple), Windows Phone and BlackBerry OS (RIM) (Supermonitoring 2013 [online]). Less used (insignificant) OSs are: Symbian (Nokia), Samsung Bada, webOS (Hewlett-Packard), Linux Maemo and MeeGo.

JavaScript UI Framework

JavaScript, also called Dynamic HTML, is an object-oriented programming language used in the web development industry to make web pages dynamic. Where HTML specifies the content of a web page and CSS its presentation, JavaScript specifies the behaviour of web pages (Flanagan 2011, p. 1). JavaScript Frameworks are frameworks based on this scripting language that contains functions, widgets, and a set of utilities for Rich Internet Applications (RIA). They offer useful tools for cross-browser event handling which otherwise would be problematic because of the differing implementation of it in browsers. JavaScript UI (User Interface) frameworks enable developers to create a user experience for their apps with less effort. Frameworks usually allow faster development because of the ready- to-use / out-of-the-box components (widgets) that can be reused without programming them from scratch. Developing an effective mobile application without them is daunting (Traeg 2014 [online]).