iPhone vs Android vs webOS from a developers point of view

I’ve been fortunate to have developed apps in the last year for the iPhone, Android, and Palm Pre, and on a few occasions been asked to compare the platforms.  So without further ado … comparing these platforms from a developers point of view.



Programming ease – B+
Although Java is one of my least experienced languages;  it’s also one of the most intuitive for me.  Not having to deal with garbage collection and nasty memory management bugs definitely gives Android a leg up in programming ease over iPhone.  I find the application model (intents, and activities) about as natural as the iPhone, which is to say, fairly intuitive.
One big downside is supporting multiple devices and operating systems.  I’ve spent countless hours trying to debug device or OS specific bugs.

Documentation – B+
A strong developer community provides some fairly solid support.  Blogs, text books also exist for those looking for these resources.  However, I don’t find the library documentation that Google provides or the developer site very rich.  Not nearly as rich as the apple documentation.

Tools – C+
Development tools aren’t great; although I don’t think their “horrendous” as Joe Hewitt famously says.   An eclipse plugin is fairly mature now, the debugger works well, the emulator works well.

Market – B+
There’s a hungry (and growing) market of Android users.  One downside as admob has reported is that they seem less inclined to pay for apps compared to those on iPhone … due largely to the free precedent google has set.
Getting your app to market is much easier as well.  Getting an app published is a matter of posting the app, as opposed to the hoops Apple has you jump through.


Programming ease – C+
I actually really love objective C.  It’s a very elegant language.  But compared to the other players, I think it requires much higher learning curve.  This probably has a lot to do with it’s lack of memory management.  I also find the separation of  UI (Interface Builder) and application (XCode) particularly obtrusive.

Documentation – A
Apples reference guides, tutorials and texts are incredibly rich.  Furthermore the hordes of iPhone developers have contributed a wealth of information available online.

Tools – A+
The iPhone SDK and XCode IDE is awesome!  Great debugging tools, NSZombie, instruments, integration with source code, etc.  are heads and tails above any other toolset.

Market – B
It goes without saying that *a few* people have heard of the app store.  However, throwing the app into the store can sometimes be like a raindrop in the ocean.  It’s tough to get exposure for your app.


Palm Pre webOS
Programming ease – A
Anyone with a bit of web dev experience will LOVE webOS programming.  I had a bit of Rails experience and with this, programming for the Palm Pre was a breeze.  Familiar Model view controller paradigm using Javascript, HTML, and CSS, makes things natural and quick.
Documentation – C
Documentation is pretty week for webOS.  A lack of community resources, inferior reference material from Palm, can make things pretty hard to troubleshoot.
Tools – D +
If you think the android tools are bad … you’ll think the webOS tools are despicable.  Maybe things have improved, but my last project required a gdb command debugger and hundreds of log statements to get any debugging done.  The emulator lacks many of the on device libraries.  A big fail here for developing with webOS.

Market – B
I could make an argument that if you’re a small shop looking to release an app, you should do so in the webOS catalog.  No, if you’ve got a winning app, you’ll never get as many users as you would on the iPhone.  But … webOS users are HUNGRY for apps and willing to try anything.

The winner?

I can’t really say there’s any clear winner and think it’d obviously depend on what expectation you had for your app.  But for the sake of the argument I’ll give ya 2 winners.

If I was releasing an app which I knew was able to get some exposure, I’d probably suck up the learning curve and release it on the iPhone.  The iPhone truly is the leading device, it’s beautiful, it has the market share, and users are willing to download (and pay) for apps.

But if I was building an app that I felt was gonna have a hard time getting much exposure, I’d actually consider building it for webOS and hope HP revs up the community.  It’d take half the time, and while there aren’t many of them, webOS users have proved to be hungry, willing and able to try out new apps, and pay for them.

5 thoughts on “iPhone vs Android vs webOS from a developers point of view

  1. Hi David, just found your blog whilst researching about development experiences. I’m a long time Java developer with experience on everything from fat clients to enterprise. I’m just looking at Android after spending the last year learning iOS development.

    I don’t know the APIs enough yet to comment, but my experience of the tooling so far has been abysmal. The simulators are so slow (and I have a 8 core/8G PC) that I first thought they where constantly hanging. The Eclipse plug-ins appear very primitive and often give miss-leading information. The UI editor appears so useless that it’s better to hand edit the XML and when an app crashes in the simulator I get told there was an error, but not what it was, nor is there any log output. There’s lots more annoyances.

    So I mostly agree with your ratings except for a couple of changes. Firstly I’d give the Android tooling at least a D-. Secondly with XCode4’s integration of Interface Builder I’d up it to either B+ or A. Not A+ because there are still a few bugs and issues from the re-write, but Apple’s done an awesome job on it so I’m leaning towards the A. I do agree about memory management although I don’t find it that arduous.

  2. Pingback: ipad2 video
  3. Pingback: Android

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s