Information technology has come a long way. This is particularly remarkable if one happens to be one of the people who have the chance to observe it for a long time. I could vividly remember an evening 16 years ago when my father brought home a computer, which had since become my close friend for many years. The computer ran an Intel 386 chip with 16MHz clock rate and has 4MB of RAM. On that limited computing power, my brother and I could learn English, play games, and a few years later, access the internet via dial-up modem. The computer meant the world to us.
Fast forward to present day. The iPad is now an important friend of my family. It is a magnificent 9.5-inch device whose CPU is 62 times faster, is equipped with 64 times more RAM and has much higher display resolution than my first computer . You don’t communicate with the iPad via keyboard and mouse; you use its multi-touch interface, which is incredibly easy to use. Just a couple of weeks ago, I talked to a client who told me that the first thing his non-tech-savvy mother said, after playing around with his iPad, was “Can I keep it?” (I decided not to show the iPad to my parents.)
If this little tablet with its superior computing power and usability does not impress you, let consider another mobile device: the HTC Desire HD . This is a Google Android-powered smart phone which will be released within a couple of weeks. The phone has a 4.3-inch monitor, 1GHz CPU, 768MB of RAM (3 times the iPad), built-in WIFI/EDGE/3G adaptors, 8 megapixel camera and a HD video recorder. And, like the iPad, this device is mostly made of screen and you interact with it via touches. As powerful as it is, this phone does not superiorly stand out from the crowd though; there are many other smartphones that feature pretty similar computing power, like the iPhone 4, Samsung Galaxy S and Motorola Droid X etc. Moore’s law on the CPU clock speed might have already been stagnant for personal computers but definitely not for mobile devices. We will see even more powerful mobile devices in the years to come.
Computing power aside, nobody should even ignore a market which turns out 1.2 billion phones in 2009, as reported by Gartner . It is also shown in the report that the share of smart phones is increasing fast and it is easy to imagine that very quickly most of the mobile phones in the world would be smart phones. (Today, you could buy a brand new shiny Android-powered touch-enabled phone from a prestigious vendor for $300. One can imagine it is only a matter of time before Chinese and Indian mobile companies flood the world market with cheap Android-powered phones.) No doubt about it: we’re entering the era of smart mobile devices.
This article provides an overview of the two important areas of mobile development that I think many developers would be interested in: development stack of major mobile platforms and application distribution channels. My objective is to provide new mobile developers with a quick head start and useful facts so that they could explore specific area of interest at their convenience.
Let’s first look at the most popular mobile platform of today: the Apple iOS, formerly known as the iPhone OS. To develop apps for the iOS, you need to write code in Objective-C (basically C with objects) using the iOS SDK with XCode as the IDE and running on top of a Mac OS X machine. In case you haven’t noticed, all these technologies and tools are strictly Apple’s products. Although it is possible to run Mac OS X on a non-Apple-branded computer, i.e. the so-called Hackintosh approach, its legality is still in debate and usually the gain doesn’t worth the effort and the however-unlikely risk of a lawsuit, especially if you are enterprise users. This information alone should tell you something about Apple’s preference to platform integration: every layer of the technical stack should come from Apple. (Third party applications were only officially supported since version 2.0 of the iPhone OS probably because Apple saw an opportunity in the increasing number of users jail-breaking their phones to install non-Apple applications.) In a blog post about why the iOS doesn’t support Flash, Steve Jobs mentioned about the fact that third-party layers like Flash could affect the reliability and performance of the iOS and implied Apple would prefer to control the whole stack themselves .
For a while, from April to September 2010, Apple did not even allow apps written for the iOS to be cross-compiled from any other language and framework besides the official stack. Obviously, that policy caused lots of negative reactions from many developers who think this vertical integration strategy handcuffs them. As a matter of fact, I hardly know any developer who likes Objective C which, in my opinion, is like a language designed by many people who never talked to each other. And if you ever have to design UI using Interface Builder, you will likely look at the calendar to be sure the year is really 2010.
In September 2010, under the pressure of the increasing popularity of Google Android, Apple decided to relax the language restriction to allow applications to be written in other languages and compiled down to code targeting the iOS. That means third-party platforms like MonoTouch  and Titanium  can hope for a brighter future. With MonoTouch, for instance, one could write code in C# targeting a Cocoa-like API and have it compiled directly to iOS native code (no Just-In-Time compilation is involved because Apple wouldn’t allow that). No wonder, this freedom in platform choices is a fresh air for iOS developers.
Let’s now turn our attention to the next most popular mobile platform available today, the Google Android. Most people probably don’t know that the Linux-based Android OS wasn’t originally developed by Google. It was developed by a Silicon Valley startup which was acquired by Google in 2005 . Unlike Apple, Google’s strategy is to release Android as open-source under a permissive license (Apache) so that mobile hardware vendors, such as HTC, Samsung, and Motorola etc. can customize their own proprietary (and very likely closed source) version of Android. Apparently, Google hopes that this would drive Android adoption significantly. Besides, this approach assures that not only could Google push platform level innovation, but any other mobile vendor could also do so that, besides their inherent right to innovate at the hardware level. (That is not to mention that some brave developers could download the Android source, develop their own version and install it on their devices.) Obviously, Google is no philanthropist; mass adoption means Google can generate revenue from at least 2 sources: commission from selling apps on the Android market and their cut from in-app advertising.
The Android class library is built on top of a subset of the Apache Harmony, an open-source implementation of the Java Standard Edition . Even so, Java developers might be a bit disappointed to know that Android, instead of using the familiar AWT, Swing or JME API, comes bundled with its own UI classes. Additionally, the Android OS doesn’t use an implementation of the Java Virtual Machine, but instead using the Dalvik VM which was engineered to work effectively on devices with low memory. Being a register-based VM (as opposed to a stack-based VM like the JVM and .NET CLR), Dalvik executes its own bytecode. Therefore, Android comes bundled with the DX tool whose purpose is to convert normal Java class files into Dalvik executables (.dex files) during the compilation process. Regardless of the implementation details, Java developers should feel at home developing applications for the Android OS. It’s also worth mentioning that one could write Android applications using either Mac OS X, Linux or Windows.
The Android OS Architecture
A recent bomb in the technology world was activated by Oracle when it filed a patent infringement lawsuit against Google regarding the Android OS . (Google certainly had hoped to avoid such legal entanglement by employing the Dalvik VM and the open source Apache Harmony class library.) It is too early to know what this might end up, but there is a possibility that Android would be forced out of existence (like the fate of the Microsoft JVM). But Oracle might not want that to happen because they couldn’t benefit much from Android being dead as their Java Micro Edition technology (created since the days of Sun) is a highly obsolete technology. Even in a world without Android, there’s no way JME could complete against iOS, Windows Phone 7 among other advanced smart device platforms. It’s more likely that Oracle would aim to settle for a profit sharing strategy with Google so that Oracle can get a cut of every possible source of revenue Android brings to Google. Or maybe Google is meticulously collecting another set of patents that Oracle violated in counter. While this scenario is quite unlikely because asides from the Java platform, owned by Oracle, technical portfolios of Google and Oracle have little intersection, it is still a possibility. Let’s wait and see.
Apple iOS and Google Android aren’t the only players in town though. Big mobile platform vendors like Samsung, HP, and Microsoft have also released their own smart device platforms, i.e. Bada, webOS, and Windows Phone 7 respectively. Nokia and Intel are also co-developing MeeGo, a Linux-based OS targeting both netbooks and mobile devices. Among these, the Windows Phone 7 OS, whose 10 first devices from various vendors like Dell, HTC, and LG were announced on October 11th 2010, is expected to be the fiercest competitor to the iOS and Android platforms. Engineered from the ground up, WP7 is not simply the next sibling from the Windows Mobile family. Like Google, Microsoft doesn’t attempt to control the whole hardware-software stack but relying on third-party vendors to manufacture WP7-powered phones. In this aspect, WP7 poses a threat to Android as both will have to compete for the heart of hardware manufacturers. Unlike Google, Microsoft not only doesn’t release WP7 as open-source but also imposes strict requirements on hardware’s compatibility with the OS. With this move, Microsoft certainly hopes to tap into the Apple’s market segment which includes users who enjoy seamless usability and care less of what actual devices they use. Finally, the fact that Windows Phone 7 applications could be written in either Silverlight, XNA or .NET Compact Framework means millions of existing professional .NET developers would feel very comfortable developing WP7 applications.
Smart mobile devices are not disruptive merely because of their computing power and usability, they are also disruptive because of the ease third-party vendors have to develop and distribute applications for these devices. That was first made possible with the Apple App Store, the marketplace for iPhone, iPod Touch and iPad applications. The App Store model is very simple. Suppose you are a software company and has built an application for the iPhone. Now, instead of spending money and effort on a marketing campaign to at least make people aware of your application, you would just register to be an iOS development shop for an annual fee of $99. Then you could go ahead uploading your app and designate a price tier to it. It will take Apple a week or so to review your application before approving or rejecting it. (It is not difficult to come across about some horror stories regarding Apple’s approval process.) Once approved, your application will officially be searchable and buyable by any iPhone user. For each sale, Apple gets 30% of the revenue and the rest gets accumulated and transferred to your bank account monthly. In addition, Apple and application vendors could also generate revenue by selling additional functionality or data (called in-app purchases) or displaying ads.
As simple as this model is, it offers unprecedented benefits to all involved parties. Apple, as the moderator of the market, makes money by building and maintaining the store, reviewing apps and getting their commission. Device users have a one-stop-shop to search for apps to purchase and review apps they already purchased. Application developers and companies have a fast way to distribute their applications and collect paycheck. Everyone’s happy. No wonder why the App Store has attracted over 250,000 apps after only 2 years of operation. The problem is, of course, the market has become more difficult for newcomers to penetrate. Long since the day when a hobbyist programmer could quickly code up an app and make some good money. It is estimated that 25% of App Store apps are free, so even if you plan to release your app for free, you have to compete with an estimated of 62,000 existing apps in the App store ! In a recently published (and long awaited) App Store Review Guidelines document, Apple themselves stated, “We have over 250,000 apps in the App Store. We don’t need any more Fart apps. If your app doesn’t do something useful or provide some form of lasting entertainment, it may not be accepted .” Now, call that good competition.
As successful as the App Store is, its dominant status is being threatened every day. Being a late comer, the Google Android Market is attracting an amazingly fast application growth rate. To get an idea, in February 2010, it is estimated that App Store and Android have about 150,000 and 20,000 applications respective . As of September 2010, the figures are 250,000 and 80,000 respective . In other words, while the App Store has a 67% growth rate in seven months, the Android Market has a 400% growth rate! No wonder Apple had to relax iOS development restriction in order to stop continuous flood of developers who jump to the Android bandwagon seeking for more freedom.
One can easily guess that other smart device vendors have also launched their own application stores. For example, Nokia, RIM, and Samsung have since released Ovi Store, App World, and Samsung Application Store respectively. The Windows Phone Market Place will be launched very shortly together with the public sale of Windows Phone 7 devices. Intel even takes the concept further by announcing the AppUp store for net books . All of a sudden, every otherwise high-tech company becomes excited about running a market, albeit virtual. They just can’t miss the opportunity.
This paper covers essential concepts and facts about smart device development and distribution. Not only is mobile development democratized by a wide array of modern platforms and development environments, but application distribution is also democratized in an unprecedented way. One must love the future of mobile computing.