While the iPhone has without a doubt been the big success story of the past year in the mobile phone world, many other companies are planning to release similar devices this year to challenge its status as the undisputed king of smartphones. Some of the more intriguing competitors for the iPhone will be those devices that are powered by Android, Google’s open source mobile platform.
Google said in November that it developed Android to spur innovation among developers to create applications for mobile phones that wouldn’t be exclusive to particular carriers or devices. In contrast to the iPhone, which developers previously had to unlock in order to create and distribute their own applications, Google said that Android would create a truly free environment for third-party developers.
Months later, Apple decided that it wanted to encourage third-party application development as well and released its software developers kit (SDK). Additionally, Apple said it would help developers distribute their applications by creating an AppStore that would let consumers browse and purchase individual applications much as they do with music and movies on the iTunes store.
So now that Apple and Google are both openly courting third-party developers to write applications for their platforms, the question becomes just what those platforms offer developers in terms of ease of use, support and distribution models.
Jason Cline, a senior software engineer at Web application developer Sitepen, says that the broad differences between the iPhone and Android SDKs are related to trade-offs between greater freedom and greater accessibility. Thus, for instance, while Apple may control which applications it will allow onto the iPhone, it compensates by having an AppStore that makes distributing and selling the applications a relative snap, says Cline. Additionally, Cline says that the iPhone operating system and presentation is so accessible and user-friendly that it has set the standard for other mobile operating systems.
“Android is a completely open system, while Apple is definitely more of a closed system,” he says. “They say, ‘Here’s a very small box that you can work in.’ It’s a very nice box that has a lot of nice features, but as a developer, you’re a little bit constrained.”
Benoit Schillings, CTO for software developer Trolltech, notes that Apple not only gets to pick and choose which applications it will sell in its App Store but also prevents developers from making applications that modify or compete with existing iPhone applications, such as Web browsers.
“Apple definitely puts restrictions on what kinds of applications can be written,” he says. “It blocks the door to Java and other applications frameworks. In their SDK contract, they prevent you from opening up new programming language and they keep control of putting new language on the phone.”
The programming language used for each platform is one of the key differences between the iPhone and Android SDKs. Android is a Linux platform that uses Java as its programming language, whereas the iPhone employs a mobile variation of the Mac OS X that uses the Apple-developed Objective-C as its programming language. Hal Steger, vice president of marketing for open source software company Funambol, thinks that Android has the upper hand in this particular matchup since Java is a more widely known programming language.
“There are definitely a lot of people interested in developing for this platform,” he says, before adding that each platform could benefit from opening up to C or C++ to attract even more developers. “If you want to capture the best programmers, those are the ones that program in C++.”
Sitepen CEO Dylan Schiemann agrees that the iPhone SDK would do better if it used a more common programming language than Objective-C, but says that any experienced programmer who really wants to develop applications for the platform won’t have any trouble learning it.
“Apple applications developers have been using it for years,” he says. “It’s not a difficult language to pick up; it’s just a matter of actually taking the time to learn it.”
But while the iPhone may use a less-common programming language, say some programmers, it also has the advantage of already being widely deployed and uniform on every iPhone device. Android, on the other hand, is expected to be used on a broad array of devices that have different types of keyboards, different screen sizes and different customized features. Thus, programmers for Android devices might have to make different tweaks in their designs for different devices, whereas programmers for the iPhone know that they’re programming only for a specific device.
“As an operating system, Android has not really been tried out in the market yet,” says Schillings. “If you write some code for Android, it’s important that you will have to make a few adjustments for different devices before your application goes to market.”
In the final analysis, says Cline, Android’s success with third-party developers could hinge on whether Google can make the platform and programming language behave universally on a variety of different devices, thus cutting down the work programmers have to do to get their products to market.
“If Google can somehow make this easier and level the field, then that’ll be another thing that makes Android either really easy or really difficult to develop,” he says.
Editor’s Note: The following article is reprinted from Network World.