iPhone vs. Android Development

Monday, December 28th, 2009

Leon Gersing has been dabbling in Android development lately and made quite the comment on Twitter today.

Of course, it’s all in good fun.  Leon’s a bright guy and I was genuinely interested in what he’s observed.  Well, he quickly cranked out a post describing some of the differences between the iPhone and Android from a developers perspective.  I agree with what he’s said.  While the iPhone is a commercial powerhouse, Android has some really good things going for it under the hood.  Whether that matters or not in the marketplace remains to be seen, but you can’t keep good developers from salivating over each other’s tools.  I like what he’s showing.  And I hope that some of that impacts iPhone development, too.

I left a comment for him describing, from my perspective, some of what holds the iPhone back.  I thought I’d summarize it here, too, for my readers.

  1. Anonymous functions/closures – Objective C needs them badly. They got them in the latest Snow Leopard, but not on iPhone yet. And even then, the syntax REEKS of C. It’s a horribly leaky abstraction that, while doable, is not as elegant as he pulled off with Java. That’s unfortunately more of an fundamental Obj C issue than just a Cocoa issue.
  2. Garbage Collection – Yes, Obj C 2.0 does have it. I don’t know why the GC wasn’t included on the iPhone. My suspicion is that Apple is being cautious or is waiting on some better optimizations to it’s GC. That is indeed a point about the JVM that shines. They’ve done serious research into good GC. I doubt that the iPhone will be GC-less for long. It’s unfortunate it’s not here yet.
  3. Community Involvement – Yes. Android is a more open platform. And I’ve bumped into more and more devs who are stoked to use it. It’s gathering the same kind of collaboration appeal that I sense when I hang out with the Ruby community. And look at all the great gems (literally!) that come out of that!

I have a suspicion (no real insider info at all), that Apple is going to make Ruby a more prominent language on it’s platforms. With the incredibly rapid maturation of MacRuby, and the fact that it will be *compilable* to machine code…that smells like room for a revolution to brew in Cocoa land. Imagine being able to share open source components and abstractions the way we share gems now. Again, I have no hard evidence that this is coming to the iPhone, but I most definitely hope so!