Given that the mobile space has been though a game-changing phase off the back of iPhone OS 2.0 and more recently Google Android, it is interesting to look at these platforms from a developer's perspective. While the mechanics of the platforms are well documented in a number of resources, I would like to contrast what the platforms offer from a capabilities standpoint. I was previously responsible for the Shazam application on iPhone and in the process of building that out got to explore a lot of the platform. I separately worked on an internal Android project at Method to compare capabilities.
They are both, at the core, very capable modern operating systems for mobile devices that have opened up a vast set of options for third party developers. However, they are not desktop operating systems and a number of things that might be taken for granted on the web or with a desktop application cannot be assumed. For example, both platforms 'sandbox' applications in the interests of security and platform stability. However, in the case of the iPhone it goes a step further and the OS only allows one application to execute at a time, a few notable Apple-developed applications aside. This makes some usecases tricky to implement and others infeasible. This sandboxing also affects inter-application communication. iPhone currently implements a pretty simple solution based on a URL that can be handled by a registered application, but there are no platform-provided solutions for checking if the user has the target application installed or a robust data sharing model for inter-application collaboration.
Android is at the other extreme, with everything on the platform packaged as an Intent that can call in and call back to any other appropriate Intent. In principle, you only need one photo browser, to be able to browse and select images across multiple applications. Maybe your application has a lot of data that might be of use to other applications, on Android that is potentially a ContentProvider. Android hopes to build a framework that after market applications can be part of, talking to each other and sharing data in ways that may not have been necessarily envisioned by the developers. A bit like a Web 2.0 mash up environment for traditional applications.
In many ways, the on-device browsers are the strongest competitors to native applications on these platforms. Mobile Safari brings intelligent formatting and a full Javascript engine, Android adds built in Gears support. Coupled with a lower barrier to entry, there are some experiences that just make sense as a device optimized website.
Both these options are a significant step forward for smartphones and mobile platforms in general. After being in the mobile space for over 7 years and working on most of the platforms out there, Android and iPhone are a breath of fresh air in a ecosystem of low volume Windows Mobile devices, archaic Symbian phones and limited J2ME implementations. There is no doubt that these platforms are pushing a new channel for mass market interactive experiences. Navigating this landscape presents its unique challenges but applications that make the most of the platform's capabilities, coupled with a compelling user experience, have a great audience to look forward to.
