Definitions
Native Apps
Native apps are executable binary files developed for a specific mobile platform such as Android, iOS, or Windows. This type of mobile app must be downloaded then installed on the device. Typically, native apps have access to all hardware capabilities supported by the device.
Mobile Websites
Mobile web apps use web technologies such as HTML5, JavaScript and CSS. They run inside a mobile web browser so there is no need to download this type of app. You can open any of these examples in a PC or laptop and resize the browser window to the rectangular form of a smartphone.
Examples:
http://m.disneyworld.disney.go.com/
http://en.m.wikipedia.org/wiki/Apple_pie
Mozilla Search Query For Firefox OS Smartphones
https://blog.mozilla.org/press/?s=Firefox+OS+phone
Hybrid Apps
A hybrid app embeds a mobile web app in a native programming code container. Because hybrid apps display web GUIs, they usually will need less customization than a native app to look good on a variety of device form factors.
Using Android WebView components
See: Web Apps Overview
http://developer.android.com/guide/webapps/overview.html
"Another great feature of Android is that you don't have to build your application purely on the client or purely on the web. You can mix the two together by developing a client-side Android application that embeds some web pages (using a WebView in your Android application layout)."
Adobe PhoneGap
http://phonegap.com/about/faq/
"PhoneGap is an open source solution for building cross-platform mobile apps with standards-based Web technologies like HTML, JavaScript, CSS."
"In October 2011, PhoneGap was donated to the Apache Software Foundation (ASF) under the name Apache Cordova."
Native code containers
Intel XDK
http://www.html5dev-software.intel.com/en-us/xdkdocs/
"The Intel XDK NEW provides a comprehensive cross-platform development environment for HTML5 developers to build hybrid HTML5 apps and deploy them on mobile phone and tablet devices, or on platforms that host HTML5 web apps."
User experience
Range of available UI components
Quality of UI components
Processor capability: (Android and iOS) Device and server. (Mobile Website) Device and JavaScript
UI response speed based on client-to-server round-trip network latency,
OS Flavor Fragmentation
Android, iOS, Windows
OS Level Fragmentation
A native app may require a certain API level to support certain code and hardware features.
For Android, see "Supporting Different Platform Versions".
http://developer.android.com/training/basics/supporting-devices/platforms.html
A mobile website needs only an up-to-date browser and does not usually depend on the recency or quality of the mobile device. Exceptions can occur when the HTML5 code attempts to use a hardware capability such as GPS that is yet not supported on all devices.
Device Fragmentation
Form-factor (smartphone, notebook, mini-tablet, tablet), screen size, screen resolution
Offline Use
HTML5 caching
See also:
Google Chrome: Managing HTML5 Offline Storage
https://developers.google.com/chrome/whitepapers/storage
Cross-platform Client Development Costs
Need for expertise in multiple-platforms
Android, iOS, Windows
HTML5/JavaScript/CSS
Cross-Platform Development Time-To-Market
Existing JavaScript libraries
Support For Social And Location (SO-LO-MO)
Integration With Social Networks
Integration With Device Location
GPS, TBD
Integration With Device Sensors
Motion sensors
accelerometers, gravity sensors, gyroscopes, and rotational vector sensors.
Environmental sensors
barometers, photometers, and thermometers.
Position sensors
position, and magnetometers.
Integration With Other Hardware Devices
Camera
Input support
voice, haptic
Integration With Other Apps On The Device
Use intents and permissions to run other on-device apps.
Examples:
Contacts
Browser
Camera
Voice search
Personal assistant
Support For Listening To Events
Detect incoming phone call
Graceful degradation
Browser and HTML5 (unsupported tags, attributes, styles) and javascript compared to Java (eg NPE).
Developer Monetization
App stores: Revenue share
Advertisements
Distribution control
App Stores, independent
Discovering Apps
Native aps can be advertised in app stores but they do not have URLs
User analytics
App Updates
1) App users can skip downloading an update. 2) Mobile Web users are in synch on app version.
App stores
Mobile Web can circumvent app store curation and deployment time lag.
Security
App Source code
Android apps
Users physically have the client source code in a compiled APK file they downloaded and installed on their device. An Android client can also communicate with a server in which case that server code is not on the device.
The Android SDK attempts to obfuscate the source code but there exist decompiling tools and online tutorials for reverse engineering APK files.
Example:
http://www.javacodegeeks.com/2012/11/android-reverse-engineering-and-decompilation.html
Mobile Website
The mobile web JavaScript is available from the HTML View -> Source on the web browser. However, the app's source code is located on the server.
App Data
Connection (SSL but no Web VPN)
Vulnerability to malware
Ability to push bug fixes
Mobile Web specific security problems
https://wiki.mozilla.org/WebAppSec/Web_Security_Verification
Which standards bodies
HTML5, Android, iOS
Digital rights management
Battery usage
Ability to integrate with legacy native code
Reuse of existing game code
Marc Zuckerberg on FB's choice of native over web (for now)
http://www.youtube.com/watch?v=xK-7HEvfJUI
"Biggest mistake as a company was betting too much on HTML5 as opposed to native."
"Facebook has more people on a daily basis using mobile web Facebook than Android and iOS Facebook combined."
See also:
Sencha architects took on the challenge and developed an HTML5 Facebook
http://www.sencha.com/blog/the-making-of-fastbook-an-html5-love-story
Tim Berners-Lee: Developers Are Doing “Incredible Things” January 2013
Apps as we know them today are not part of the Web; they provide doorways into the Web, but they’re not part of it:
"There's no URL in the top bar, so I can't bookmark it. I can't tweet it. I can't like it. I can't dislike it. It's not part of the discourse," Berners-Lee said.
To solve the problem of cross-platform development and open standards, Berners-Lee points to HTML5, citing the Financial Times’ mobile app as a particularly good example of how this could work:
"Once you load the page, it pulls in all the pages of today's paper and sticks them on your device...just as though you're running an app," he said.
"Use the fact that, more and more, you can do [in HTML5] the things that a native app can do."