Thinking of building a wireless application?
Great! Just head over to Apple and download the iPhone SDK, or maybe head over to Blackberry and look into their SDK, or check out Microsoft, or Java, or Android… That will satisfy everyone right? Unfortunately, not even close. Before you even look at platforms, you have to make the decision that can potentially eliminate more potential users from your user base (Mac vs. PC anyone)?
Smart Phones vs. Dumb Phones
Would you be willing to eliminate 90% of your potential users before you write a line of code? Smart phones currently account for ten percent of the cell phone market, and is forecasted to only reach twenty percent by 2013. Still Mac developers know a small slice of a big pie can be pretty sweet, especially when those are the users most likely to download your application!
Those ninety percent-ers are really a red herring anyway. Smart phone users are downloading around 5 applications per phone, most dumb phone users aren’t downloading any (I haven’t found stats on downloads there..) Many dumb phones are now able to download Opera Mini web browser though, so a web application may be a better option than a rich client if you have to reach them… I’ll be writing more on mobile web development in a subsequent blog.
Platforms and Market Share
Market share is always changing. Have no question you will be aiming at a moving target. I find these year over year charts pretty informative:
if already dated. Both Linux (in part because of Google Android) and iPhone are gaining market share rapidly. The point remains though, that if you write an application for the iPhone, or a Blackberry specific application, you will be limiting yourself to a much smaller audience.
Sales channels are a concern within this fractured marketplace as well. Apple’s iPhone store is the place for iPhone application, while RIM, Nokia, Google have, or are launching, their own stores.
These stores naturally cover just their own platforms… Watch for evolution of this marketplace, which is really just getting started.
Java? Kind of the Answer…
It should be, but it’s not the multi-tool of mobile platforms we are looking for. A few points should be considered right out of the gate
- the iPhone has NO Java support implemented or planned
- Microsoft Mobile doesn’t come with a JVM (limiting you to customers savvy enough to download one)
- Google Android uses a non-standard JVM call Dalvik, which requires extra work to get J2ME apps running
Still, it’ is heartily supported by the other phone manufacturers and platforms. If you are careful to avoid platform specific APIs as much as possible, you can get up to 70% coverage of the smart-phone marketplace with minimal re-writes. You also expose yourself to the many java mobile download stores and sites, although many are geared towards games.
The iPhone is really problematic here if you want to write a sexy application, and you don’t have a version for the hottest phone on the planet, you’re not going to look good. There are a couple attempts to create porting for Java to the iPhone’s Objective-C machine, like InnaWorks alcheMo or cross-compiler solutions like XMLVM. No personal experience with either one yet.
You can walk down the hierarchy of phone models and OS’s and see the market for your products fracture into smaller and smaller pieces. BUT, if you really want to hit the market with the next great mobile application, and aim for close to 100% of the smart phone market, you probably need:
- a J2ME version for most of the market
- an Objective C version for iPhone
- a embedded C++ version for Windows Mobile
- a J2ME version modified to run on Android
I’d put them in that order, and really just try to nail the J2ME and iPhone. Android is evolving rapidly, and I suspect it will be easier to adapt J2ME applications to for Davlik VM as more people port their J2ME apps to Android.