Having worked at Symbian a few years ago and gotten to learn about mobile operating systems, I believe that Symbian have the best mobile OS kernel in terms of performance, responsiveness and robustness. Unfortunately almost the opposite can be said for the S60 UI layer (which Nokia makes) that sits on top of it. The end result being that a lot of Symbian phones (a lot of which are Nokias) tend to feel slow and buggy more often than they should. Nevertheless, they do pack a lot of features and thus for the last 3 years I’ve happily moved around with a Nokia N73, running S60v3 on Symbian 9.1. Over the last year Symbian got bought outright by Nokia and they’ve now turned it into the Symbian Foundation, essentially mirroring what Google, LiMo and others have done. Symbian (and consequentially Nokia) have a huge task ahead of them if they wish to remain competitive in the smartphone market.
After leaving Symbian I went to work a mobile software startup whose primary concern was a mobile social networking app written in Java MIDP. Now, if you want to stay as true as you can to the “write once, run anywhere” principle for mobiles then Java is really the only choice since almost every phone out there has some sort of Java support, albeit each with its own various inconsistencies and quirks. Writing a mobile Java app was also a whole lot easier than writing one in Symbian C . The availability of great development tools (Eclipse, JUnit, ProGuard, etc.) didn’t hurt either! Having worked on a mobile Java client I decided that if I was to build my own mobile app I’d have to do it in Java.
Then iPhone came along and 2 years later it’s now obvious that if you have a good idea for a mobile app and don’t mind learning to develop on the Mac then you might as well as write your app for the iPhone, thus giving yourself a real chance to earn a decent income from it. Many of my fellow engineers have had iPhones for a while and some of them are even starting to write apps for it, some lured by the prospect of making a killing, others just wanting to do something cool for what is hailed as the “Jesus phone”.
My T-Mobile contract is about to expire and I started seriously thinking about whether to upgrade to an iPhone or an Android handset. After much deliberation, I bought myself a lovely little T-Mobile G2 Touch instead (also known as HTC Hero). It runs Android 1.5, the latest stable release of Google’s mobile OS. Android development is essentially done in Java (the bytecode format and VM varies) using APIs which are different to the MIDP ones. You can use Eclipse to code, test and debug your apps. It’s an open source OS, which means you’ll be able to find deployable versions of the OS on the web which even include features from the upcoming 2.0 release of Android (e.g. multi-touch) folded into the current stable release.
If you read around you’ll find that the Android Market and consequent ecosystem for paid apps is almost miniscule compared to the AppStore (see article and comments and follow-up), but I’m hoping that this will improve in the near future. And anyway, if the Android app platform doesn’t really take off then atleast I’ll already have some mobile app development experience by the time I get my iPhone ;)
Update (Sep19): I’ve shifted the instructions for updating the HTC Hero/T-Mobile G2 Touch firmware into a new post