30 June 2009
Developing mobile applications in a fragmented market2019 update: I have been culling my more embarrassingly dated blog posts recently, but have kept this one in as it's a fantastic period piece.
It just goes to show how wrong can you be...
Despite the recession, the iPhone sales are still growing as more than 5 million phones were sold in the second quarter of this year, with application downloads having topped 800 million since the launch of the iTunes App store. With all the noise being made about the iPhone, it's easy to forget that it remains a minority player in the overall mobile phone market.
Some recent figures produced by Strategy Analytics suggests that despite rising sales, the iPhone still accounts for less than 2% of the overall market with Nokia coming in at more than 35%.
Having worked in desktop application for a software house in the mid-1990s, the fact that there was a monopoly operating system provider in the form of Microsoft was a god-send. We could focus on delivering functionality and enhancing our products rather than producing multiple versions of the same functionality in order to develop a wider customer base.
Given the level of fragmentation in mobile operating systems, if you want to develop a mobile-based application for a wide audience then you are faced with a plethora of competing platforms, each of which require different coding expertise and none of which allow you to share code or development effort between them.
There are more than half a dozen players at the moment, the main ones being:
- Nokia's Symbian OS is an increasingly open-source platform used accross Nokia and Sony Ericsson devices. It's a pretty messy landscape as there are a variety of implementations of Symbian that support different generations of devices. The native development language is C++, which has a notoriously steep learning curve as even the most simple applications can require advanced techniques to look after low-level operations such as memory management.
- The iPhone is based around Apple's proprietary Objective C development language. Developing for the iPhone is straightforward enough once you master the hybrid development language, but it does start to get very complex if your application does not make use of the standard controls and interface elements exposed by the SDK. You'll also need to work on a Mac as PC-based development is not supported, funnily enough.
- Google's Android OS is a recent entrant into the market and is an open source platform based around Linux. The SDK is based on Java and has been beset with a number of teething troubles which have led to grumbling in the developer community over bugs and poor documentation.
- Windows Mobile has been around almost as long as I have in one form or another. Designed as a compact operating system for a wider range of portable devices than mobile telephones, it supports a compact version of the .NET framework that would be familiar to any Microsoft developer. As you might expect, Windows mobile is more geared around mobile business applications with strong support for collaborative and data-driven applications.
- Blackberry's Java-based RIM SDK has been around for a while, and much like Nokia's Symbian platform different flavours of the API support different generations of devices. You can develop more generic application's using Sun's CLDC framework, though the development community appears to prefer the device-specific functionality offered by the native API.
- Palm OS is still going strong and application development is primarily based around C and C++ with a choice of the proprietary compiler and IDE CodeWarrior and the less-functional open source PRC-Tools. There are a variety of other, higher-level development environments available for Palm, though it removed any support for a Java virtual machine in 2008.
- On top of this there are the cross-platform APIs, such as BREW, Java ME and even Flash Lite. These platforms provide a degree of portability, though none would claim to work accross all platforms. They can provide the means to develop small cross-platform applications, but more advanced device-specific functionality will require a device-specific API.
How should you approach mobile development? It depends very much upon the demographic of your users and the motive for developing the application.
It's often argued that although the iPhone has a small share of the market, it has the most application aware users, so it "punches above its weight" in terms of potential user base. There may be some truth in this, though in the absence of any reliable research it remains a speculative argument. The application store landscape may be about to change as Apple's competitors are rushing to establish their own application stores, with Nokia's Ovi store and Google's Android Marketplace already up and running.
When deciding which way to jump it's important to honestly consider the purpose of an application. Is the application there to fulfil a genuine functional need, attract a large body of users, generate revenue or just make a noise in the market place? In many cases, an application isn't even the best way to go - web content that is targeted for a range of mobile devices via frameworks such as WURFL is still the most effective means of delivering mobile content. Perhaps digital strategists should take their mobile web content into consideration before rushing towards application development.