Given the landscape in which mobile applications exist is currently changing, i expect the "best" answer to this question to change as well, but for right now, which are the best operating systems/frameworks upon which to build mobile apps today.
I'm thinking in terms of cost, learning curve and market penetration.
views:
134answers:
6As you wrote, the environment is constantly changing, but if you plan to make your app the most portable as possible, in my humble oppinion you need to start developing with Java Micro Edition (J2ME). One of the best IDEs for the job is Netbeans.
Depends on the device I suppose. I don't think there is one common way to write something that will work on every device.
The big ones would be:
- Windows Mobile: C++ or .NET Compact Framework (JavaME if you install the Java Runtime manually)
- iPhone: C++ (i think). IIRC it doesnt support Java yet.
- Android: JavaME
- Blackberry: JavaME
- Other non-smart/PDA devices: Probably C++?
You need to define the end-result requirements for the application.
Part of the answer depends on what mobile hardware you will be running. And, whether or not you need to use unique abilities of your hardware (touch-screen, barcode scanner, gps, special buttons, VOIP, etc.) or if a simple input/output screen framework is sufficient.
That might drive your decision towards a local application or something more remote like a web application or terminal services. (There are, of course, local applications that use remote services also. Do you need to consider multiple front-ends?)
In addition, where are your development strengths? What are your language proficiencies? As you mentioned, mobile application development can have a steep startup curve for learning and for setting up your initial development/debugging/deployment environment. Is that worth it, or can you leverage desktop or web development experience and deploy remotely?
Once you make these decisions and determine your development environment and target, then you can take the next step to look at frameworks and methodologies specific to your needs.
Android
Cost: 0
Learning curve: More or less 0 if you know Java
Market penetration: HUGE
Android phone sales is expected to rise 900% this year, and the market isn't limited to phones. Some mini computers are going in that direction as well, choosing Android as their OS.
In terms of market share, at this point you won't get better visibility and hit ratio than you will get with the iPhone. There are plenty more Blackberrys than iPhones, but the number of people who buy and download apps on the iPhone are much much higher.
However, the cost are pretty high if you want to start developing for the iPhone.
- You have to get a Mac if you want to do any sort of iPhone development. That'll set you back at the ~1k on the low end.
- You'll have to pay for the iPhone Developer account for $99/year
Learning the iPhone SDK, which is in Objective-C, will be similar to C/C++ if you already know it.
That said, who knows what kind of splash the Palm Pre will make. So market share will be unknown, and I'm not sure of cost, but if you know HTML/Javascript, you're set.
In terms of Android, while it's a nice platform, market share is still barely a drop in the bucket. It is written in Java, and it has a lot of nice APIs, but until you have a lot more people with Android devices in their hands, it's kind of moot.
Blackberry would be a good platform to develop on if not for the iPhone. The SDK is in Java and from what I hear have decent tools to get the job done. The advantage here is that you'll have a lot of potential for consumer facing apps and potential for enterprise apps (because every business has too many of these :)
So, it depends on how much you want to spend and what kind of apps you're going with. Learning curve, I think, shouldn't be an issue because each of these platforms has their own SDK you'll have to learn anyway, so you're starting at about the same level for each of these platforms.
My picks are (in order):
- iPhone
- Blackberry
- ??
That said, that is the current view of mobile app development. It's always good to keep updated and at least have a notion of the other platforms so you could potentially branch out.
This just in -
Today's Code Project Insider included this InfoWorld article -