First post in the series.
Apple’s iPhone 3G has been recently crowned as the most popular phone in US, according to market research group NPD. This is a very impressive achievement of Apple, especially as a new player in the mobile phones market. It may seem that the global mobile phone market is going to be dominated by iPhone and the likes. Well, not so fast…
Worldwide sales of mobile phones to end-users reached more than 309 million units in the 3rd quarter of 2008, according to Gartner. This market is dominated by 5 leading manufacturers: Nokia, Samsung, Sony Ericsson, Motorola and LG. Apple is currently ranking at No. 7 with 2.2% market share, just under RIM. Sales of all smart phones (including Symbian, Blackberry, iPhone and Windows Mobile) reached 39.85M, according to Canalys. Thus, smart phone represent about 13% of the global market, which means that 87% of the new mobile phones are still running embedded operating systems. Given the global economic downturn, these numbers will probably not change significantly in the upcoming quarters.
What does it mean for mobile application developers? As the diversity of mobile platforms is growing and consolidation is not seen in the horizon, the challenges of developing cross-platform mobile applications become acute. Many companies that enter the mobile market tend to focus at the high-end open platforms, such as Nokia’s Symbian and Microsoft’s Windows Mobile, as the more mature operating systems. The newcomers in this arena are Apple with their OS X for iPhone and Google, which endorses the Linux-based Android OS. All of these are indeed powerful platforms for application developers, but if you really want to reach the mass market, you must target the embedded OS phones.
Those mass market phones are not open for 3rd party application developers, unless you use restricted run-time application environments, such as Sun’s Java Micro Edition (Java ME or J2ME) for most GSM phones and Qualcomm’s BREW, mostly for CDMA. Developing in these environments means that the developer doesn’t have access direct access to the underlying operating system and the phone’s resources. Instead, the developer can only use APIs that are exposed as an abstraction layer, which represent a fraction of the phone’s functionality.
Java ME is by far the most common application development platform for mobile phones today. When it first introduced by Sun, about a decade ago, the promise was “write once, run anywhere”. This utopia has never been materialized. Developers of Java ME applications must not only cope with the different implementations of the fundamental APIs (CLDC and MIDP), but also with the different extensions (JSRs) and security policies. The latter is becoming a major pitfall, since device manufacturers and mobile operators have created a realm in which they have more power than 3rd party application developers. The policies for 3rd party applications, even if they passed the JavaVerified certification process, are different among different devices and sometimes for the same device across different operators.
Another challenge, which is applicable to all mobile platforms, is the need to support different networks and access points. When a mobile application connects to the network it may be routed through various gateways. These gateways are not transparent, as one could expect. In fact, they may impact the application, especially if “WAP” APNs are being used. Thus, a client/server application must be tested carefully in different network configurations and the developer should be aware of these restrictions.
