Android and the iPhone dominate the app store market with more than 500,000 apps submitted for each platform. Windows Phone has a far more modest 60,000 apps, but they’ve all been developed in the last 18 months. Compare that to BlackBerry App World which launched in April 2009 and also has around 50,000 apps, although there were plenty of BlackBerry developers before App World.
Sheer numbers aren’t the only measure; the Android Marketplace also has more malware and pirated apps than other stores and large numbers of apps can mean a lot of poor-quality and duplicate apps (there are over 100,000 apps in the Android marketplace that have been deactivated for various reasons). But the number of apps available says something about both the popularity of each platform – developers build for phones where they can get users and make money – and how easy it is to create apps for the different smartphone operating systems. How do the four main phone platforms shape up?
The iPhone has cachet, and to developers who’ve been creating iOS apps for the last four years – or to Mac OS developers – working in Objective-C and Cocoa is familiar. There are clear user interface guidelines to follow and Cocoa provides the beautiful UI components we’re all familiar with on the iPhone. You can put together a simple application very easily on iOS and there are plenty of APIs to give you access to the device hardware, like the camera and sensors.
But how easy developing for iOS is depends on what you know already; if you have experience with Java or .NET, developing for Android, BlackBerry or Windows Phone may be easier and if you want to do more complex development, other platforms can be easier to work with – especially if you need to pull in external data. There are some common programming concepts that aren’t in Objective-C (like generics) and the structure of code isn’t as elegant as on systems. Plus you can only develop on a Mac, and submitting apps to Apple is a notoriously opaque process.
Android gives developers a lot of power, it’s also the one platform where there’s no charge to submit apps to the marketplace and no real hoops to jump through to get approval. As always, with great power comes great responsibility – and some complexity.
Both Android and the current version of BlackBerry use Java as their main development language (although you can write HTML-based apps for all smartphones – something that’s becoming increasingly important with frameworks like PhoneGap making it easier to take advantage of native features on all platforms).
Android development uses the Eclipse IDE platform, which is free and available on all desktop operating systems, but not always easy to get started with if you’re not familiar with it. Similarly, Android is best suited to those who already have experience working in Java, and with experience of building their own user interfaces – you don’t get as many default UI components, so you can change the look of an app more easily but you also have to build more of the look to start with and Eclipse doesn’t have good tools for this. It’s definitely harder to make a good-looking Android app than an iPhone UI. Developers get extensive access to the hardware of the phone, but the APIs come from the phone makers rather than from Google. You can download them automatically through the Android SDK, but dealing with a variety of APIs for the same function adds more complexity.
That’s on aspect of a problem Android has that’s shared only (and to a much lesser extent) by BlackBerry. Both Apple and Microsoft are successful in updating the vast majority of handsets to the latest version of the operating system. There are still BlackBerry users with versions as old as BBOS 4.6 but over 90% of users have BlackBerry 5 or higher, and over 75% of BlackBerry app downloads are on BlackBerry 5 and higher. That means fragmentation isn’t as big an issue as it is on Android, where developers have to developer for and test against many versions of the operating system, as well as different screen sizes, resolutions and input methods. New phones don’t always launch with the latest release and the Android Upgrade Alliance launched at Google IO hasn’t improved the number of phones that don’t get upgrades to newer versions of Android.
Options for creating the user interface for BlackBerry apps are limited because the platform dictates much of the look of applications, but there are powerful APIs that give you access to services as well as the hardware. For example you can build an app that uses BlackBerry Messenger (and the 300 apps that already do that make up 10% of the downloads from AppWorld each month) or use the ETA API that looks at traffic and works out how much longer it will take to reach your destination. Uniquely, apps can push information into other apps, including the inbox of the built-in messaging app; RIM calls these super-apps.
All of this changes for the PlayBook and the upcoming BBOS 10 devices, which support AIR, C++ and OpenGL – but not Java.
Windows Phone may be a latecomer to the smartphone market, but it has an impressive pedigree for developers – and developer tools that are both powerful and free (including one of the nicest tools we’ve ever seen for profiling the performance of an app and working out how you can speed it up). You can develop in a choice of languages, including C# (or any .NET language with the pay-for tools). Apps can be built in either Silverlight or XNA – the Xbox programming language – or a combination if your app mixes 2D and 3D views; these are easy to get started with and many developers have experience in one or the other. Microsoft provides an extensive range of UI designs and controls that are easy to work with, with plenty of guidance.
Access to the phone hardware was initially very limited but it’s being opened up; apps can use the camera and sensors like GPS, compass and gyroscope. Microsoft also offers simplified combined APIs to get location or orientation from a combination of sensors with a single call. You’ll have to use third-party libraries for some features (like bar-code scanning) and these aren’t always as well documented as the main operating system, but Microsoft has a wealth of resources, tutorials and support from forums to videos to free events.
Submitting to the Windows Marketplace has the same $99 fee as submitting to the other commercial app stores, but there’s another option; if you want to build and sideload your own apps that you don’t plan to sell, you can use the third-party Chevron WP programme to unlock your phone for just $9. That doesn’t open up the same security issues as sideloading Android or BlackBerry apps, but it gives you an option iPhone just doesn’t have.
In many ways, Windows Phone is the Goldilocks of smartphone development. It doesn’t give you as much power as Android but it’s less complex to work with. It has user interface options that are as sophisticated as iPhone (and a significant improvement on Android). It isn’t as locked down as iOS but it’s not much harder to get started with and the programming model is arguably both more elegant and more powerful. But the reality is that increasingly developers want to build apps for all the smartphone platforms, and they’re using frameworks – including HTML5 tools – that iron out some of these differences.
Pic credit: The Understatement