Although Apple's iPhone App Store has been king in the smartphone market since its creation, the recent app store rejection sagas have shown us just how frustrating the iPhone platform can be for developers. Granted, the iPhone platform is quite powerful and has a huge user base. But if an app is going to be caught up in the review process for weeks â only to be rejected in the end â it's understandable for a developer to give up on the platform altogether.
One of the high profile cases is that of Joe Hewitt, the developer of the Facebook iPhone application. After enduring arbitrary rejections and approval delays, Joe has decided to bid good riddance to the platform as a whole and move to a platform where he will be appreciated. And who can blame him?
For any good developer, there comes a point where he says, "I don't need this!" and migrates to a new platform.
Enter stage right: Android.
Android is the brainchild of Google and the Open Handset Alliance. It is an open-source, Linux-based operating system built to be an iPhone OS killer.
Unlike the iPhone OS, Android is not locked down to any device manufacturer or cell carrier. It can be used with Sprint, Verizon, AT&T and even T-Mobile.
The recommended IDE (integrated development environment) for Android is Eclipse, a free development environment with versions designed for nearly any type of coding you want to do.
iPhone developers should be familiar with Xcode and the iPhone SDK. Android does not require a specific development tool.
The recommended IDE (integrated development environment) for Android is Eclipse, a free development environment with versions designed for nearly any type of coding one wishes to do.
However, developers can use whatever coding environment they like alongside the source code and core files downloaded from the Android developer site.
The Android platform has three major advantages over the iPhone side.
RESPECT FOR DEVELOPERS
According to the iPhone developer agreement, developers are not permitted to write applications that duplicate (or improve upon) any functionality already provided with the device. This prohibits developers from writing their own Mail client, music player, central calendar, or anything of the sort â even if what the developer produces is a grand improvement over the stock application. This model does not respect the developer.
Android, on the other hand, not only allows developers to duplicate existing functionality â but encourages them to do so! Can you write a better mail client? Go for it. Can you improve the music application built in to the system? Please do. You can even look at the FULL source code for the stock applications to get a starting point for your own application. If you wonder how something was made or put together, you can open up the source code and see exactly how it was done. Can you do that on the iPhone? Nope!
Android developers have no limits on what they can develop for the operating system. They get the trust and respect they deserve, while iPhone developers have to live within the boundaries set by Apple.
The iPhone App Store â especially in recent months â has become increasingly infamous for rejecting apps for foolish reasons with little to no explanation. Apps are frequently removed from the store or rejected flat out â leaving the developer dumbfounded and with no recourse.
Android has the Android Market. To sell in the Android Market, a developer needs to pay $25 â once. Compare that to Apple's required $99 per year.
One will find the Market far more developer friendly as well. The Android Market uses a community review system. Only if an application is flagged as being excessively buggy or inappropriate for the Market is it reviewed. If an app is found to be inappropriate or it is found to not function correctly, it may be removed from the Market and the developer given an opportunity to fix the problem before uploading it again.
Apps don't sit in an approval queue for weeks with an uncertain future. An app is live in the store as soon as a developer uploads it.
At present, the Android Market contains roughly 10,000 applications. That is about one tenth of the applications of the iPhone App Store (approx 100,000 apps) but considering the platform is relatively new, 10,000 apps is a great start.
MORE PROFESSIONAL PROGRAMMING LANGUAGE
One major drawback to developing for Mac and iPhone platforms is the need to learn a new programming language: Objective-C. Objective-C is a cousin of the C programming language, but it is syntactically very different. Some, including myself, would call it ugly from an organizational perspective.
Android development uses Java, and while many programmers may not be familiar with Java, it is a professional programming language and is easy to pick up and learn quickly.
Syntactically, it's a very simple language. Because it's so common, the resources for learning Java far outnumber those of Objective-C.
Objective-C, even for those who like it, doesn't have much use beyond Mac and iPhone development. Java is used across the technological spectrum in devices like PDAs, Blu-Ray drives/players, computer software, and even the Amazon Kindle!
For those who don't want to learn Java, Google and the Open Handset Alliance have been assembling a new BASIC-based language called SIMPLE. The goal of SIMPLE is to make programming the Android OS as easy as it can be. This language is not yet finished, however, and does not yet do everything a developer may want.
So, can Android be an iPhone OS killer? I'm of the opinion that it can. Yes. It has the characteristics of a platform that can really take off â especially considering growing discontent with Apple and the App Store.
Users are not locked into any carrier, and that's huge. One of the largest complaints I hear about the iPhone is that AT&T is horrible. As I am not an AT&T customer, I can't speak for or against them. However, the iPhone would benefit greatly if it were diversified and allowed to operate on all four of the main cell networks: AT&T, Verizon, Sprint, and T-Mobile.
Apple needs to take a hint from Android, or they will be left in the dust in no time.