What mobile platform should I start learning? What matters is:
- ease
- popularity of platform
- low cost of SDK and actual handheld
- other criteria...
What mobile platform should I start learning? What matters is:
This one is easy (even for a Windows Mobile developer like myself):
iPhone
The technology underlying the device is nothing special, but Apple has provided a convenient and reasonable mechanism for paying developers while locking down the device to the extent that software piracy is (as far as I know) totally impossible [update: or apparently just difficult]. Who wouldn't want to write software for a rapidly growing market like that?
Windows Mobile devices could have done this 6 or 7 years ago, but nooooooooooo ...
I don't really like Symbian. Popularity and ease makes iPhone perfect.
I also heard Android it's a cool platform to develop, but I haven't try it myself and it's not so popular yet.
Android
Linux kernel. The sdk is low cost (free). Java is considerably popular language.
I think 3-4 platform have a future. But depends what platform do you like and how you like freedom in distribute your applications :)
Here's the platforms in order of future popularity:
1) iPhone
It has three moats anyone has to cross to catch up - accessories, apps, and hardware add-ons
Accessories for the iPhone and touch can be found all over. They have iPhone/iPod docking radios in many hotel rooms now...
Apps of course, Apple has a deep lead in - but the lead is greater than it would appear because in addition to all of the apps, there are now tons of developers with iPhone experience. Sure some of the initial apps are meaningless fluff but there are now countless categories with deep teams of people working on real applications.
The last moat is new but no-one is close enough to doing anything similar that they can prevent it - and that's the ability with 3.0 for companies to build specific devices and talk to them over bluetooth and the dock connector. The TomTom car iPhone dock (more than just a dock, it also houses a more powerful GPS reciever the TomTom app can make use of) is the tip of the iceburg in this regard. Medical devices, analysis tools, etc.
2) Palm Pre
The Palm Pre has the advantage that a lot of Palm users that really want to stick with them have a great upgrade path, and the Pre has the same advantage Apple has in that they are building a single device themselves that makes it easier to build an application that takes full advantage of the platform and really fits in well with the philosophy of the device. Only the more limited nature of the SDK is preventing a much larger selection of apps, but I think we'll see this platform grow pretty well. The only danger is, I can see them being bought out my Microsoft and then they are toast.
3) Android
Android has the advantage of more devices. But that also makes it a lot harder to build and test apps, and to write apps that take best advantage of specific features. I think there will be more physical devices around than the Pre but I'll bet in three years there's more application use going on with the Pre than the Android platform.
For ease of development, I'd rate the Pre first (unless you are not very familiar with CSS), the iPhone second, and Android third (simply because not as many resources exist/will exist to help you with Android development, it has about as large a framework set as the iPhone to make things easy for you).
Symbian and Windows Mobile are simply out of the game. Unless they buy one of these three they are done as a serious platform for mobile software, despite how many devices may be around right now (see: Android issues regarding device range). They also just don't have either the framework or IDE richness these three platforms have and are growing every day...
Apple really has done a Microsoft in creating an application platform that will lock in customers for years. There are several apps that I would have a tough time giving up at this point.
I was making a similar choice, and ended up making the investment to go with the iPhone. The benefit has been that I really like the Mac - this is my first, and developing has been a lot of fun. I'm not looking to sell to the masses though, I am writing applications that support businesses with mobile content. Android would be my second choice, and I wouldn't even consider WM or Symbian.
Popularity: worldwide numbers say that JavaME is clearly ahead of everybody else. Symbian a distant second. iPhone even more distant third, far far away. However, if you're targetting a continent or a country or a language, then the numbers can change dramatically.
Ease of development: Objective C is a cool and powerful thing but remember it is 20 years old. iPhone is easy to develop for but Android development is just as easy, free and multi-platform. JavaME is a nightmare except if you target a very limited number of different handset models. Native Symbian OS C++ has the worse reputation in the market but it's clawing back inch by inch, year after year. Symbian also the huge advantage of letting you choose which language you want to develop in.
Cost of tools: JavaME would be cheapest, followed by Symbian, Android then iPhone.
Other criteria: well, a lot depends on what applications you want to develop.
No mention of Palm's WebOS as it barely registers as a blip on the radar, from a commercial standpoint, at least for now.
Check Google for smartphones market share. Here is one from Gartner. In short, sales stats for 2008 are (sales is in thousands of units):
Operating 2008 Market Growth
System Sales Share 2007-2008
-----------------------------------------------------------
Symbian 72,933.5 52.4% -6.1
Research In Motion 23,149.0 16.6% 96.7
MS Windows Mobile 16,498.1 11.8% 12.2
Mac OS X 11,417.5 8.2% 245.7
Linux 11,262.9 8.1% -4.2
Palm OS 2,507.2 1.8% 42.2
Other OSs 1,519.7 1.1% 13.1
-----------------------------------------------------------
Total 139,287.9 100.0% 13.9
So, reading this, Symbian devices are biggest market. Iphone and BlackBerry are fast growing
platforms. Android came on market late last year, so it's hard to say how popular would it be.
My pick would be:
Edit:
Re Mac comments:
Re Symbian comments:
I know about symbian.org and open source initiative. But:
You could also look at the web apps path:
It's a trade-off between the ability of the native SDKs and the ubiquity of the browser platform. I know a lot of developers dismiss web apps out of hand as too weak, but the platform has definitely grown and is worth investigating. Old assumptions like "it can't go offline" or "it can't access local data" are not necessarily true anymore.
iPhone, obviously. Putting your effort into another platform right now would just be fool's errand, or at best would be risky. Perhaps the Pre or Android have potential, but the iPhone is way past the "potential" stage. Blackberry is another strong option, as they are already big and still have great things on the horizon, but the platform itself is limited and I don't know that a BB user is going to be grabbing as many apps as an iPhone user is.
Here's why I think iPhone, based on your criteria -
Now that Nokia has bought TrollTech(Qt) for the purposes of creating a great mobile platform on top of Symbian, you'd think that the OSS crowd would at least mention it.
Symbian has a huge market compared to all of the others. Qt is the backbone of KDE, allows easy cross-platform development, and is very well designed.
You'd think that:
... would be a future hit just waiting to happen. You certainly have a better chance of making money than being one more app in tens of thousands of others, with users expecting to pay no more than $0.99.
Symbian is also starting on the path to opening up the code. Actually, as the Qt mobile platform matures, the underlying OS may not really even be that important.
All one needs to do is to note the tag counts, on the top right of this question, in order to get a subset population (at stackoverflow.com) of where the popularity is.
As of my comment, the tag counts were:
The are other factors, obviously. Do you enjoy writing for Windows Mobile over iPhone or J2ME? Do you know J2ME but want to get into iPhone development? I dont think there is any one correct answer, but the tag-counts do say something about popularity.
Programming for mobile clients has historically been a nightmare. The fragmented nature of the mobile world exacerbates any problems you have encountered in the desktop/server market.
If your goal is to make money as a small developer you should focus your efforts as much as possible. To this end the iPhone is the only real choice, the cost of testing, porting and certifying your application on J2ME, Symbian or WinMo very quickly overcomes the potential market advantage these platforms have.
You also need to consider the technical requirements of the applications you are going to develop. For example while J2ME is 'supported' on more handset than any of the other possibilities the security model restricts the usefulness of J2ME if you want to do 'cool' things (at least this has repeatedly been a problem for me). The fragmented support for JSRs is also a major problem. J2ME can run on a lot on non-SmartPhones but do these handsets support the features you want.
Also consider the handset distribution across your target audience. Location, income and age of your potential users will greatly determine the handsets that you can and should target.
My own experience is that mobile application programming is a loosing battle on Symbian, WinMo and Brew. It is a organizational nightmare on J2ME. But many people are making Money on the Apple AppStore. And Nokia now has Ovi... RIM has a store, WinMo will have a store... Maybe Apple's success will push the other handset vendors to get their act together and make it easier.
A note on your criteria about handset cost: MTK (Most of the Chinese/Tawanese knock-offs) would be the cheapest, but you can only install on the handsets at manufacture time so it's not really an option... Java handsets can be cheap, but the porting issue is a pain. One international company I worked for spent more than half a million on handset acquisition and client porting every year as they had to test their applications on each new Java handset and even the same handset with different firmware (just enter N95 in the Wurfl and you can see how many different firmwares there can be when the European operators do silly things like install custom firmware so the Vodafone UK and O2 UK N95 are not the same.) WinMo can be the same, every new release has different API(s) and the OEMs change things... If you count the cost a acquiring even a few Java or WinMo handsets to ensure your application works across different OS editions and firmwares then you have spent a tidy sum. Might as well get an iPhone or two.
So, my suggestions?
Now that Safari supports advanced features like GPS location via JavaScript, the best thing to get into is standards-compliant web app development. This way, you can ensure easy updates and compatibility for multiple devices from a single code-base.
Given the size of market share that Symbian phones have (not just Nokia Series 60) that would seem to be a good choice. There are pros and cons though. Symbian has a steep learning curve, steeper than the alternatives. The distribution channels aren't as good but are getting better (Ovi for example, Symbian foundation Horizon).
The iPhone has the cool factor at the moment and a superior UI. The distribution mechanisms still aren't perfect though. You can only sell via the Apple store and they don't have a great reputation for helping developers get their app out.
Android, as mentioned above, is based on the linux kernel. Given the Nokia Maemo platform is coming in phones in the near future, familiarisation with it may do no harm.
The main difficulty with mobile development is portability. It's simply very difficult. Realistically, if you are new to mobile development, it's probably best to pick one platform and run with it.
So, in short, my answer: Symbian.
For a starter point, due to your matters, answer is J2ME
I've shipped code on iPhone, Symbian, BREW, Java ME, Windows Mobile, Palm. Personally I enjoy working on the iPhone the most.
All of the above as well as Android, allow you to download and run the SDK for free. I would recommend you try out the ones you think you will like most and run your programs in the simulators. Figure out which one you enjoy and then throw yourself into that.
Here is Gartners latest report on the Windows7/Symbian/Android competion. Guess its bad days for Windows 7. Sybian & Android are the ones who will grab the market: