This post shows various differences, in various categories between building native mobile apps and web mobile apps. I know that everyone has their own experiences and opinions, which I would love to hear. So, don’t hesitate to hit the comments at the end of this post.
|Native App||Web App|
|Platform||Five different mobile platforms:
|Mobile web browser. Differences still exist as different versions of mobile platforms run different browsers, with different support for various latest HTML5 features.|
|App discovery, monetization, support|
|App discovery||App Store – proven and popular.||A number of options:
|App approval||App is published to an app store and goes through review process before being approved||Instant, no approval process|
|App installation||Downloaded from app market and installed||Open URL in a mobile browser, or another popular option is to create a short cut on the phone. The short cut gives more of a “native app” feel.|
|App update||Updated app goes through review process, then downloaded and installed||No approval or download process. Just update the mobile web app and everyone gets the new version.|
|App support, maintenance, adding new features||
The more platforms you support, the more challenging and difficult it becomes supporting and adding new features.
It’s not uncommon to have different native apps for iOS and Android with different feature sets. The app for iOS is usually more mature and stable.
|Supporting and adding new features is much simpler, as you write once and it’s available on every platform. Write once, deploy anywhere.|
|Monetization||App Store – proven monetization strategy.||Web apps have a number of options:
|Porting/add new platform||Need to learn another mobile platform
Need to learn platform’s “UI approach”
|Nothing – build once, run anywhere (almost). Might need to tweak the UI a little bit to “fit” it better in to the underlying mobile platform. Difference in browsers and supported features.|
|User experience||Native application have a lot of UI effects, usually more developed UI “logic”. Native apps can “feel faster” and screen sizes on mobile devices makes native apps more enticing as well.||Can be “very good”. For example, an app like Gmail. Will continue to improve and get better.|
|Perception||Today most people associate mobile apps with something you download and install.||We are so used to desktop web apps, so it’s just a matter of time before we “get used” to mobile web apps. It’s also important for more and more (good) web apps to become available.|
|Video/Audio||Built-in||Possible with HTML5|
|Offline or disconnected apps||Native apps can work in disconnected mode.||Offline mode can be achieved with HTML5.|
|Full screen mode||Built-in.||Can be in full mode by hiding browser address bar.|
|Accelerometer||Built-in.||Possible with HTML5.|
|Push||Possible with native platforms.||Possible with HTML5 technologies.|
|Integration with phone services||
Good integration with phone services:
||Still somewhat limited with HTML5. But, more and more apps like that get data from the Internet, and not the client device.|
|Integration with phone hardware||
Integration with phone hardware
||Some support via HTML5 is now available for camera/video.|
Need to learn one or more of the mobile platforms and their underlying programming language/SDK:
Every platform will also have its own approach and style to developing and designing mobile user interfaces.
|Mobile development frameworks||Every mobile platform has its own SDK. Even though Android and BlackBerry both use Java, applications are not compatible. BlackBerry plans to allow running Android applications on BlackBerry devices in the future, probably inside a special wrapper (virtual machine).
A number of options available today for building web mobile apps:
Tools that can build both native and mobile web apps:
Tiggr Mobile (coming up), PhoneGap, Open plug, Adobe Flex Mobile, Titanium Appcelerator, Corona SDK
|Enterprise integration||Existing infrastructure could be reused but also need service layer to communicate between client (mobile) and server. Can use REST, SOAP or custom communication protocols Hessian, Protocol Buffers.||Existing infrastructure can be reused.|
Virtually any application we used to have on a desktop from email to drawing to CRM, is now available as a web application. I think a similar move will happen in mobile, as more and more natives apps are moved to become mobile web apps.