I have been used my Palm Treo 650 for a few years. Now i am considering to buy a new one among iPhone, BlackBerry and Windows mobile. It seems windows mobile is best for me. Because I have experience with .NET development, and I think .net framework compact will not be too far away from my knowledge.
Apart from calls, messages, I use it to check email, news and internet a lot. And I am very interested in developing small useful programmes on it as well. But it seems fancy iphone and push mail with BlackBerry are also very cool.
To consider both mobile programming and personal use, which is the best choice of a mobile system for programmers?
Windows Mobile is by far the most developer friendly platform. Please note however that you need Visual Studio Professional edition to write mobile applications. Other than that, developing applications is much like developing for desktop machines. No need of signing applications, application stores or annoying security warnings (only a single warning, when you first run your application). Also, the tools are in very mature state and you can focus on your application from day one rather than fighting with platform intricacies. So, I would say that Windows Mobile is the best solution for hobby projects and for small scale applications.
For mass market applications (targeting the consumer market), I think iPhone and blackberry are more suitable. These platforms seem to have a bigger share and on top of that, owners of these phones are more likely to pay for a new application.
There is also Symbian and specifically Nokia’s S60, which has the biggest share in smartphones today. However Symbian is notoriously known as developer – unfriendly and I also think that owners of Symbian phones don’t know/care that they can install applications in their devices. Not to mention that applications need to be signed in order to run.
Finally there is J2ME. This is not so limiting as it used to be and it has the big advantage that it targets almost every phone available. However, it has been used until today mainly for games, because every application that uses a sensitive API needs to be signed. It would be a good solution, if you were only interested in games.
Android is ostensibly more “open” than iPhone. The wireless carriers claim to not plan on interference with developers on Android. We shall see.
If you just want to hack, Android is likely going to be more friendly to you. That said, you are in a Java sandbox.
If you’re into games, I would go iPhone, since there is OpenGL ES support and some pretty cool third-party libs like Unity and Cocos2d.
SO if you want people to see/use your apps, for now there is only iPhone. The older systems like J2ME and BREW are the past. I don’t expect them to survive for more than a few years at most.
Symbian is popular in Europe, but it’s a beast of an API as I recall. Everything seemed extra hard to me.
If you plan on distributing your app (either free or for pay) then the iPhone platform definitely has the advantage. All you need to do is write the app and submit it, and they take care of the distribution and sales (assuming your app is approved).
The Android platform is another option that also has a “marketplace”, however it’s much newer with much fewer handsets available.
Edited years later: I’d go with Ionic. Best cross platform development platform I can find.
- heard terrible things about it
- expensive development environment
- blackberry is more common for business, which says a lot
- restrictive NDA
- potential for apple to not approve your app even if it’s safe and useful (read this article about a podcast app that someone developed that apple rejected )
- objective C hurts my eyes 🙂
- $100 for a license
- on the plus side, tons of people have this platform
- don’t know if it’s free to develop on, I’ve read that you have to have the license to put apps on your phone
- free to develop on, free to put apps on your own phone, $25 to get a license
- development environment is actually pretty good and free (Eclipse is what I use)
- more handsets being released, more carriers coming on board
- Samsung phone on the way (I’ve been really happy with all the Sammy phones I’ve owned)
- Java is very easy to pick up if you are a C# dev
- your app will only get removed from the store if it’s a security risk
- pay-to-play apps are on the way soon (I hear January but that’s just a rumor I think)
- this will likely be the first mobile platform to have Silverlight
Android is the win for me.
Re: the openmoko freerunner: Android version on the way.
Edit: For a laugh, try comparing the google results for “iphone development horror story” vs the same for Android. Not much to compare, couldn’t find any horror stories for Android.
I am mainly focused on the iPhone as it is the best combination of technical capabilities and popularity right now (I’m considering the overall OS X platform as part of this – my work on the Mac complements the iPhone and other potential OS X platforms well). Windows Mobile seems to be in poor shape for the forseeable future. Android is much more open for those that can’t stand Apple’s attitude and tight-fisted control, but honestly I’m going to wait for that platform to deliver a little more on the promise it has before spending too much time or money there.
Honestly the part that most interests me about the iPhone is playing with Objective-C and some really impressive frameworks (Core Animation for example). From what experience I have with .Net, I just enjoy programming more in Cocoa.
Unless I missed something in the original question, you’re not asking about developing apps and distributing them (either for free or profit), but just developing utilities for your own use? In this case, I’d say a phone that is free is what you want (free like speech). The most open one I know of is the OpenMoko Neo Freerunner (I own one… it lacks a lot of polish, but it’s a mostly-functional phone with nearly limitless potential). I get a kick out of running an SSH daemon and HTTP server on my phone. One of the new Google phones may also be a good choice.
If you already have .NET CF experience and you’re not worried about selling software then i’d suggest it is a good choice as the .NET CF is pretty reasonable these days and there are a fair number of decent tools available for it.
In addition to the other posts about the IPhone i’d recommend reading the IPhone SDK before developing on it, you gain a lot through their store but after I read it I decided the only thing i’d choose to do on an IPhone is hack it. Made me angry did that document….
In terms of beauty i’d say certain Blackberries rival the IPhone, especially the bold and i’d imagine their SDKs are more lenient.
It totally depends what your application is for. The iPhone distribution mechanism is great – provided you are confident about getting your application past Apple’s acceptance criteria. Windows Mobile is harder to distribute once you’ve written the application – but is much more flexible in terms of what you can achieve – for example you can write applications that sit in the background, which is impossible on iPhone.
You might also want to consider Nokia S60, which is a powerful platform, albeit with a very steep learning curve.
iPhone is probably the easiest platform to distribute apps for, but also the least open (if Apple don’t approve your app, you’re screwed, unless you just want to use it yourself and distribute it to a few friends). However, the learning curve may be pretty steep for you if you have not used Objective-C before and you don’t have any ‘C’/C++/Java background. That said, I managed to put together an app without any prior knowledge of objective-C or MacOS – a good book helps (i used the pragmatic programmer’s iphone SDK book – without this I was getting nowhere fast).
With Android and Blackberry, probably any Java programmer could get up to speed fairly quickly. There are app distribution channels for both, but the market is smaller.
iPhone or Android if your at all interested in a usable internet experience on your phone. I’m going to suggest Android since you are a windows developer as that likely means you dont have the mac you would need to develop for the iPhone.
The only place developers are making money right now is on the iPhone, so I would say go with that.
I’m not really sure what you are asking in the question though.
For better or worse, as a mobile developers you have consider what time investment will result in the best potential monetary result (of course if this is just as a hobby ignore the below).
As such, currently my best recommendation is iPhone. Though objective-c can be cumbersome, the ability to touch so many users (and get paid for it) is pretty cool.
Additionally I’d look into blackberry and Android, but that greatly depends what you want to do. If your app has a business function and you think you’ll be able to sell it, its very possible to be successful on these platforms. Android is especially interesting since the space is still being defined.