Building native applications for a platform VS. building for the web

Since Google launched Android, there’s been lots of speak native applications built for a platform versus applications built for the web that can be leveraged anywhere, regardless of device.

As a developer its much easier to have one code base and not have to worry about the “backberry source safe branch” versus “iphone Javascript Clearcase VOB branch” – these are a pain.

But, its the necessary evil, since many people prefer platform native applications (for good reasons) are:
a) faster in most cases because you dont have layers of “abstraction” to go through
b) better, since they leverage specific API and calls that makes them better “integrated” into their platform (e.g. If you have facebook for Blackberry, notice how much easier it is to look up profile for someone that adds you as a friend versus doing the same on the web browser version of Facebook on your Blackberry explorer)
c) seamless since they can leverage other native calls written to leverage what the platform was intended for

Lets revisit some of the basic needs for creating native mobile applications on the platform versus creating web applications for the browser (PC, computer, etc.)

1. Form factor (Much smaller size of screen): this means you have lesser space. In an average PC (more laptops these days are getting bought) you can get enough “over the fold” real estate, to have a left navigation, right navigation and a central area. On a mobile device your options are much more limited. Navigations appear useless (unless its the iPhone) so you are focused on the “central” area. In a laptop for example you can have a video on the left and an ad on the right. In a mobile device, nothing but the video fits in. In the blackberry 8800 for example when I search on google, I get paid search listings first, which wastes real estate since I dont usually get ads for what I am looking for.

2. Smaller keyboard / input options: Although mobile devices have mostly numeric options, smart phones (over 80%) have a keyboard or a simulated keyboard). Again, your options are very limited in most cases.

3. Usually much slower bandwidth into your phone versus computer / laptop: Without iPhone Wifi you are stuck with EDGE or the Sprint / Verizon network – which for most parts are awful. So as a “designer” you have to sacrifice form over style or design.

4. Attention span of the user: usually mobile users are “on the go”. On your laptop you tend to have a lot more focussed attention span of the user. On the mobile device, they are talking, listening to music, looking for directions, drinking a latte while using the phone with one hand. They dont have time.

I may have missed others.

Where as with the web there’s an increasing push from Google and Ning to build generic (HTML plus Javascript, etc) instead of FBML, why are they still pushing developers to build native platform applications?

One answer might be “ lock in“. There has to be a better answer.

Wont the problems of speed and keyboard mostly go away with time? Also if you look at the iPhone, the Safari browser is just as good as any PC based browser.

You will remain with form factor and attention span, but you can address those without building native applications.

I am hoping Dare, Dharmesh and others can shed more light.