Today’s smartphones have evolved from devices which had the primary purpose of making calls and sending text messages to devices which can be transformed into a gaming machine, a satellite navigation system or a newspaper which also plays videos.
The shift has fundamentally altered the way consumers think about what a phone is and how they use it, so much so that its primary functions (calling and texting) have become secondary.
This evolution is currently headed by the iPhone which currently has over 3,50,000 apps on its app store. Not far behind is the Android market place which houses over 1,40,000 apps. Also, Nokia, RIM and Microsoft provide similar apps.
So with apps being a hot and lucrative market and a number of competing platforms to choose from, how do we go about developing it? There are basically two choices when it comes to developing a mobile app.
1. Create a native application
A native app is an app which is installed and run on the mobile and is developed using the device’s SDK. As the name suggests, these applications run only on one platform. i.e. an app which is developed for Android phones will run only on those phones and not on iPhones. So developers need to develop a different app for each platform. Once developed, the app can then be sold on its respective market place such as the Apple’s App Store, Google’s Android Market, Nokia’s Ovi Store.
2. Create a mobile web application
A mobile app is a web-based application which runs in the browser of the mobile. There’s no special deployment necessary. It only requires a browser to execute. The goal is to build a web app which is usable by most (if not all) of the different types of mobile platforms. However, in practice this isn’t particularity easy – yet.
Suppose one needs to develop a mobile version of their site, then they have an option of not doing anything and hoping that their already existing site is useable enough on mobile browsers as well. This depends on how the site was built, which browser is being used to view it properly, etc. There is a possibility that a large number of users may get a less than ideal experience. We’ll cover the difference between mobile web sites and desktop web sites in detail soon.
Both web and native apps have their pros and cons, and the choice often has to be made based on what you want your app to do and what your users should expect.
Going Native
Developing a native app will provide benefits in its performance, given that it is tightly integrated with all the device’s features and its API’s. Native apps enhance user experience by utilizing the full capabilities of a device.
Native apps have certain advantages like:
Because a native app isn’t restricted to running in a browser they can do some pretty intensive things such as an augmented reality app or full 3D games. Neither of this is currently be possible with a web app.
But there are downsides, too:
So if we want to do anything that takes full advantage of a device’s capabilities, or do anything custom or unique, then we’ll go for a native app.
However, the issue of building and deploying on many different platforms mean the overall cost may be high. And this is where web apps look like a great alternative: A web based app should be able to run on any device with a browser.
Going the web app way
A web app is an application that is accessed over a network.
Everything which we interact with on the internet is a web app in one form or another: Facebook, Twitter, Flickr – all in a broad sense are web apps.
The major advantage of web apps is mobility. They can be used on-the-go (wherever you are, via almost any browser).
No downloading, no software updates and no uninstalling!!! Just open a browser window, type the URL and hit Go. Add that to fact that almost all mobile phones now-a-days have a web browser means that we have potentially large number of users who are already familiar with how to get to and use the app.
However web development for mobile devices is still in the developing phase and it is difficult to do quite a few things which would be straightforward in a native application (like accessing the camera).
Even though currently it’s not possible to build a web app that will do everything that a native app does, for some situations a mobile app is perfect. There’s some great work going in with jQTouch which is a tool that makes it easier to build mobile web apps for both the iPhone and Android, that look and feel more like a native application.
There’s also PhoneGap, which enables a web app to be packaged and deployed as a native app for the iPhone, Blackberry and Android.
Also with the advent of HTML5, the gap between web apps and native apps seems to be reducing.
With these types of tools emerging, and the mobile phones themselves becoming more powerful, it’s not long before web apps will become the choice for a larger percentage of mobile apps.
The fact that Apple (iPhone), Google (Android), Palm (Pre), Nokia and RIM (Blackberry) are all backing the open source WebKit engine to power their web browsers, proves that the biggies are taking a major step in getting a consistent experience across multiple devices.
Very soon, web apps will stand true to the principle: write once, run anywhere.
In the next couple of years most, if not all, mobile platforms will have support for the following advanced features all of which will drasticly change both what web apps are capable of and what users will expect from them:
The shift has fundamentally altered the way consumers think about what a phone is and how they use it, so much so that its primary functions (calling and texting) have become secondary.
This evolution is currently headed by the iPhone which currently has over 3,50,000 apps on its app store. Not far behind is the Android market place which houses over 1,40,000 apps. Also, Nokia, RIM and Microsoft provide similar apps.
So with apps being a hot and lucrative market and a number of competing platforms to choose from, how do we go about developing it? There are basically two choices when it comes to developing a mobile app.
1. Create a native application
A native app is an app which is installed and run on the mobile and is developed using the device’s SDK. As the name suggests, these applications run only on one platform. i.e. an app which is developed for Android phones will run only on those phones and not on iPhones. So developers need to develop a different app for each platform. Once developed, the app can then be sold on its respective market place such as the Apple’s App Store, Google’s Android Market, Nokia’s Ovi Store.
2. Create a mobile web application
A mobile app is a web-based application which runs in the browser of the mobile. There’s no special deployment necessary. It only requires a browser to execute. The goal is to build a web app which is usable by most (if not all) of the different types of mobile platforms. However, in practice this isn’t particularity easy – yet.
Suppose one needs to develop a mobile version of their site, then they have an option of not doing anything and hoping that their already existing site is useable enough on mobile browsers as well. This depends on how the site was built, which browser is being used to view it properly, etc. There is a possibility that a large number of users may get a less than ideal experience. We’ll cover the difference between mobile web sites and desktop web sites in detail soon.
Both web and native apps have their pros and cons, and the choice often has to be made based on what you want your app to do and what your users should expect.
Going Native
Developing a native app will provide benefits in its performance, given that it is tightly integrated with all the device’s features and its API’s. Native apps enhance user experience by utilizing the full capabilities of a device.
Native apps have certain advantages like:
- They can use all of the device’s features such as its camera, GPS, compass, file system etc.
- They can be sold through a marketplace such as the App Store or Android Marketplace.
- They have superior performance compared with a typical web app.
- Don’t necessarily need to be connected to a 3G or Wi-Fi network.
- They’re not running in a browser. So there’s no restriction on the types of application that can be developed.
Because a native app isn’t restricted to running in a browser they can do some pretty intensive things such as an augmented reality app or full 3D games. Neither of this is currently be possible with a web app.
But there are downsides, too:
- Higher development cost and longer lead time.
- Very little portability across platform – if you want your app to run on both the iPhone and Android, it means building two separate versions.
- Maintenance and upgrade costs.
So if we want to do anything that takes full advantage of a device’s capabilities, or do anything custom or unique, then we’ll go for a native app.
However, the issue of building and deploying on many different platforms mean the overall cost may be high. And this is where web apps look like a great alternative: A web based app should be able to run on any device with a browser.
Going the web app way
A web app is an application that is accessed over a network.
Everything which we interact with on the internet is a web app in one form or another: Facebook, Twitter, Flickr – all in a broad sense are web apps.
The major advantage of web apps is mobility. They can be used on-the-go (wherever you are, via almost any browser).
No downloading, no software updates and no uninstalling!!! Just open a browser window, type the URL and hit Go. Add that to fact that almost all mobile phones now-a-days have a web browser means that we have potentially large number of users who are already familiar with how to get to and use the app.
However web development for mobile devices is still in the developing phase and it is difficult to do quite a few things which would be straightforward in a native application (like accessing the camera).
Even though currently it’s not possible to build a web app that will do everything that a native app does, for some situations a mobile app is perfect. There’s some great work going in with jQTouch which is a tool that makes it easier to build mobile web apps for both the iPhone and Android, that look and feel more like a native application.
There’s also PhoneGap, which enables a web app to be packaged and deployed as a native app for the iPhone, Blackberry and Android.
Also with the advent of HTML5, the gap between web apps and native apps seems to be reducing.
With these types of tools emerging, and the mobile phones themselves becoming more powerful, it’s not long before web apps will become the choice for a larger percentage of mobile apps.
The fact that Apple (iPhone), Google (Android), Palm (Pre), Nokia and RIM (Blackberry) are all backing the open source WebKit engine to power their web browsers, proves that the biggies are taking a major step in getting a consistent experience across multiple devices.
Very soon, web apps will stand true to the principle: write once, run anywhere.
In the next couple of years most, if not all, mobile platforms will have support for the following advanced features all of which will drasticly change both what web apps are capable of and what users will expect from them:
- Pure web-based 3D graphics via WebGL.
- Standardized 2D graphics and animation (slick animation and graphics are trademarks of native applications’ rich interfaces).
- Standardized video and audio support (no plugins required to watch movies or listen to streaming music).
- Local storage and SQL databases ( data can be stored within the web app itself so one doesn’t always require an internet connection to use it. Google Apps provide this features already using Google Gears).
- Manifests and offline resource caching.( Photos, videos are still accessible even if you go offline).