SDK Shoot-out: Android vs. iPhone
Apple Reins in Developers
Eclipse works best as a Java IDE, so it's just as well that application-level Android programming is done in Java. But don't expect a stock J2ME implementation. Underneath Android's hood lie Google's custom Dalvik JVM and a set of core C/C++ libraries that provide "most of the functionality available in the core libraries of the Java programming language."
If that sounds uncomfortably nonstandard, however, it's nothing compared to Apple's environment. iPhone application UIs are built using Cocoa, the same set of frameworks used in Mac OS X. That means you'll need to learn Objective-C, a language that's used almost nowhere outside Apple. Apple did at one time provide access to the Cocoa APIs via a "Java bridge," but those bindings were ended in 2005.
Fortunately, both SDKs offer ample documentation, including tutorials to get you started. Google sticks mainly to plain text, while Apple goes so far as to offer actual training videos.
Incredibly, however, you don't just need an ADC membership to download the iPhone SDK; you actually need to be a member just to read Apple's documentation, which it considers "confidential material." And before you can view the training videos, you must first download them (for free) from the iTunes Store. Windows users, that means you'll need to install QuickTime and iTunes -- or just wait until after you've bought that Mac development workstation.
Even after your app is finished, Apple can impose additional restrictions. It reserves the right to reject your application from the App Store -- the sole distribution channel for iPhone software -- for various reasons, including duplicating existing iPhone functions, such as e-mail. The full terms of Google's forthcoming Android Marketplace have yet to be revealed, but it shows every sign of being considerably more flexible.
The Mobile Web and Beyond
By just about any measure, Google's Android is more open and developer-friendly than the iPhone. And yet, as of now, Google seems to have its work cut out for it. Based on raw market share alone, the iPhone seems likely to remain the smartphone developer's platform of choice -- especially when ISVs can translate that market share into application sales.
Sound familiar? In this race, Apple is taking a page from Microsoft's book, while Google looks suspiciously like Linux.
The question is: Will it really matter in the long run? Google isn't getting into the mobile phone market to be a developer tools vendor. It's hoping that it can advance the mobile Web platform far enough that it will become a viable stream of advertising revenue, the same way that Google has managed to monetize the terrestrial Web.
The iPhone and Android phones both ship with Web browsers based on the WebKit rendering engine. That means Web applications designed for one will render almost identically on the other, provided their developers adhere to published standards. Those same applications will also render on WebKit-based desktop browsers, such as Safari and Google Chrome, and on any other browsers that implement the standards correctly.
Based on that, all this talk of SDKs seems almost foolish. The iPhone may have more market share than Android today, but the standards-based Web has far more market share than both combined. So you tell me: If you're a developer, where's the smart money? The iPhone App Store? The Android SDK? Or somewhere else?
Product mentioned in this article
The G1 has great call quality and does a good job of melding hardware with the Android operating system.