All application examples are from the iPhone.
Advantages of web applications
- Write once read many – write a single application and it can be consumed on any endpoint including desktops, laptops, tablets and mobile devices of all operating systems. With CSS you can achieve a true abstraction and decoupling of the presentation layer to the business logic and storage. It is easier to make changes in one place, maintain and support one code base instead of what four or five? (iOS, Android, Symbian, Windows mobile 6, and Blackberry), with new entrants expected: MeeGo, WebOs, WP7. Market share is split in the consumer world with Symbian the dominant at close to 50% but you cannot avoid the other 50% nor effectively cover it without release at least two more native versions. In enterprise land this is a bit easier with Blackberry having 70% marketshare but you may miss the mindshare, especially in the US without an iOS and/or Android version
- Lower development costs – stems from the above point, there are "conversion" and "porting" apps that can make formatting a regular site for mobile a lot easier. Also the experience of developers: try finding an Android developer with over 5 years experience. More experience usually means faster development, less mistakes, more libraries and code to re-use, problems that have already been solved.
- Less tied to device - Do you really want your major revenue stream or mission critical application to be dependent on the whims of Steve Jobs or Steve Ballmer? Apple approved Flash recently but they can always revoke it (if to massive developer outcry). Another good example is the emergence of tablets which made the world more complicated for native applications e.g. when the iPad came out iPhone native application users had to release a new version, mobile web developers just checked that the CSS adjusted the web site appropriately. The iPhone 4 retina screen with its higher resolution display - again some native apps had to release a new version to adjust.
- Compatibility - There is no problems worrying about supporting OS versions and different hardware e.g. carriers not upgrading Android 2.1 to 2.2 and the time this takes, also carrier restrictions. Do you remain backward compatible with the iPhone 3G or take advantage of the iPhone 4.1 features?
- Security – server side data storage and processing means it is ideal for payments applications, trading etc e.g. IG Markets uses a web mobile application presumably due to this being a major factor. With data not being stored or processed, and no security controls applied in what is an untrusted zone (the users device) the application is less vulnerable to reverse engineering, rooting of the device, malware on the device etc
- IP protection - web applications are almost impossible to pirate effectively, unless the pirate sets up, runs and supports the server side infrastructure also. This has been proven for example with Blizzard's success with World of Warcraft which requires a connection to Battle.net to play, the rich client software can be given away for free. On the other hand Android developers ave been complaining of increased piracy
- Online to use – mobile web applications makes the most sense where the context or nature of the product or service requires the user to be online e.g. payments authorization or stock trading not so much for Instapaper, Angry Birds which users want to play on the Tube, Airplane etc
- Collaboration and centralized storage – it allows you to offer functionality such as a single central database which assists in collaboration and sharing. This also provides improved reliability and no data loss if the device is lost or stolen or needs to be rebuilt; there is less reliance on user controlled backups. Native Apps can also do this but require sync or upload function to a central website e.g. Flight control uploads scores, Game Center and WP7 XBoX integration may also offer these functions to native apps without re-inventing the wheel
- Less crashes – as other device application processes and applications are less likely to impact a web application running in a modern sandboxed browser, you should get less crashes. If you look at some of the analysis of the comments on applications with low ratings in the APP stores words such as fails, crashes, does not work feature heavily
- API’s and integration – it is easier for web apps to mash together web services e.g. address validation, location search
- Grunt power – most smartphones now have a 1GHz processor and between 250-500mb of RAM (that statement will be dated in a few years :) ). While impressive growth this is still approximately half to quarter the power of an average desktop and a lot slower than a decent server, espeically if your application and benefit from a multi-threaded architecture. If your application needs to do some grunty processing then a web application where all the hard lifting is done on the backend maybe the way to go
- Scalability - web apps can be built to be horizontally and vertically scalable. If your app succeeds beyond your wildest dreams as you get more users you can simply add more servers or bigger servers. With native apps if you want to add that big feature your customers are screaming for, you have to consider whether it will run on the device, there is no option to upgrade until a new hardware version is released and the users upgrade
- Share of revenue – the native application APP store takes 30% or more of your revenue on a native application. A web application you can simply send your prospective customers a link and keep a 100%.
- Whims of the gatekeeper - you do not have to comply with some of the more draconian policies of getting approved to the APP store in the first place e.g. Apple does not allow adult applications or bit torrent clients, they banned Google voice for ages. The "no more fart apps" comment - will your pride and joy be considered a fart app? How long will it take for them to tell you it has been rejected? How much money and time to fix and re-apply?
- Offline use – depending on the application this could be the deciding factor
- Offline storage – HTML5 is getting there, Google Geers etc but a native app is still the simplest for offline storage
- Better performance – due to no requirement for a round trip over a 3G connection to a backend server, best use of the device CPU and graphics capability and native coding language optimizations for the hardware at least on the user interface and user interactions should be faster
- Multitasking – native apps have their own icon and presence and it is easy to switch between them. Where as web apps all use the browser, on the iPhone at least you are limited to 8 browser tabs/windows and you can’t switch between windows with the double tap of the home key
- Use of device features – it is easier for native applications to use the device’s inbuilt features e.g. the camera, accerolameter, GPS, compass, WIFI, Bluetooth, Near Field Communications, the list goes on and on. This maybe the killer reason you go native
- APP store – app stores provide you with a captive audience, a simple distribution mechanism, reviews and feature lists, feedback quickly and of course most importantly a simple and existing mechanism to charge users including initial sale, upgrades and in-game purchases without any need or risk of storing or processing end user payment details. This is a lot simpler for native apps to leverage although wrappers for web apps like Google mobile on iPhone and IG Markets does benefit from the APP store as well. Notably though both these sell for free.
The comparisons are really not much different from 10 years ago when we were discussing the relative merits rich client applications for the desktop (what Google calls legacy applications) compared to web applications and going back further Mainframe green screen terminals vs. client server computing. Now, anecdotally at least, no company I have worked for in the past 5 years would consider even building a non web based application and while Mainframes exist they are often the grunt power for web front ends or legacy systems that still work and would be too costly or risk to change. In fact Citrix evolved as a way to take a rich client application and present it to as virtual desktop, and this is still an option for you: Citrix Zen Desktop can be used to present your current rich client applications on mobile devices providing your users, especially if they are enterprise, a similar experience regardless of the device. I talk about the security benefits of this in my article of using smartphones securely in the enterprise.
As usual the answer on web applications or native applications for mobile is: “it depends”. My suggestion: write down your requirements, your audience and the key benefits your product will provide them. Validate this with a survey or analytics if possible. Then consider your budget and timeline and the winner should emerge. Personally for my startup I am developing a web mobile application first and then if that goes well, investing in the native applications starting with the iPhone, then Android and then Blackberry. Read Write Web reporting on Adobe survey 66% said they prefer mobile Web to native apps at least in the products & shopping and media & entertainment categories. Although as RRW goes onto say a survey from Adobe may not be the most reliable.
If it is too close to call maybe your application is a candidate for a hybrid approach. Honey Do and Remember the Milk are two native applications that sync with a central server, Google mobile provides a front end and shortcut screen for all the Google applications. Maybe you could innovate further in this area with HTML 5 or Google Geers?