NB: Please mind this article was written in April 2010. It may no longer be up to date with all the details.
I previously published an Android vs IPhone comparison and many people requested that I do a comparison of Android vs iPhone vs Nokia vs BlackBerry vs Windows Mobile 7. So here goes.
Android
- Open platform http://source.android.com
- Can compile custom firmwares - good for hackers and others
- Good framework, extended on each new firmware
- Supports multitasking
- Nice IDE - Eclipse, NetBeans
- Development SDK is free
- Easy to debug, can send logs to developers
- Programming language is Java but bridges from other languages exist (C# .NET - Mono, etc.)
- Java is a high level language that appeared in 1995. Android supports Java 1.5 and translates the byte code to its own custom Dalvik byte code optimized for mobile devices.
- For the hardcore programmers, Android offers the possibility of programming in C using the native dev kit NDK
- Can run script languages like LUA, Perl, Python, etc.
- Can install third party applications from sdcard, random sites - not locked to a specific market
- Applications can hook and override everything - email interface, SMS sending, custom keyboards, etc.
- Supports widgets
- Can publish applications on the Android market instantly - initial one time registration fee is 25E
- User has access to the sdcard and can use it as a USB disk
- No Adobe Flash support yet. Probably will be available in Q2 of this year.
iPhone
- Closed platform
- No multitasking except for some Apple applications. Multitasking is probably going to be introduced in the next version of the iPhone, the iPhone 4
- Development kit costs ~90E
- Programming language is Objective C - but bridges exist from Java, C#, etc.
- Objective C appeared in 1986
- Next version of iPhone is supposed to only allow Objective C code, this means the bridges are out and you must program in Objective C if you want to create an iPhone application
- Applications are not allowed to duplicate the iPhone functionality - i.e., no custom email interface, etc.
- Does not support widgets - unless the phone is jail broken
- User does not have access to the sdcard - user can only do synchronization via internet or LAN
- Third party applications can only be installed from the Apple store. For testing the applications, developers can use Ad Hoc publishing
- Publishing on the store is a very lengthy and tiresome process. Apple has many and bizarre rules. Many applications were rejected for strange reasons.
- No Adobe Flash support
Nokia
- Opened Symbian and says the future will be QT and WRT - they will cut support to any other environment including J2ME
- QT is a framework that adds a layer of abstraction over GUI, network, gps, etc.
- QT is cross platform and cross programming language - C++, C#, Java, etc. the licenses are GPL and LGPL.
- QT runs on Maemo, MeeGo, BlackBerry, Symbian, Android, iPhone, Windows Mobile, desktop PC, consumer electronics, car entertainment, etc.
- WRT - web runtime - a cool feature that allows users to write applications in HTML, JS and CS. You build the app like a normal web page, and you interact with the phone platform/hardware using the WRT bridge.
No need to learn any other technology. Just HTML, JS and CS. Very important: JS can call native code, but also the other way around. It seems you can call WRT JS with native code.
- Supports widgets
- Supports Adobe Flash Lite
BlackBerry
- As it is now, the programming environment is Java native and J2ME - not worth mentioning since they will probably be extinct pretty soon.
- no Adobe Flash support yet. Probably will be available in Q2 of this year.
- We expect a new OS so we will just have to sit patiently and see what's going to happen.
Windows Mobile 6.x
- Native C, C# with PInvoke - not worth mentioning since Microsoft will release WM7 and will totally break compatibility with 6.5
Windows Mobile 7
- Closed platform
- Microsoft breaks compatibility with WM 6.x - this is very bad
- Programming environment is Silverlight and XNA
- No native programming, i.e., no hooking and overriding keyboard, etc. - they removed PInvoke
- Nice IDE - Visual Studio 2010
- Does not support multitasking for third party applications
- Third party applications can only be installed from the Microsoft marketplace
- No Adobe Flash support
Notes
Android phones seem to be cheaper than the iPhone. Also the hardware is in some cases double than what the iPhone has.
For those coming from a Microsoft/Borland/Java background, Objective C will probably look like a very big step back - to say it as politically correct as possible.
Nokia says they will release the new phones end of this year and at a "lower price than ever". The Nokia phones are iPhone and Android clones - they can do what those two beasts can do, but nothing more. It seems they don't bring anything new to the table.
The available Microsoft demos for WM7 are, to say the least, pathetic. It is a very non user friendly phone. Brings lots of changes (many not good) and totally breaks the look and feel the WM6.x owners were used to. Breaking software compatibility with WM6.x instantly puts many companies out of business.
The iPhone market seems to slowly but steadily go down. Some influence is the nice and cheap Android phone. Another reason for the iPhone sales dropping is that people are trying to get away from the whole iPhone=snob social stigmata.
In general, people tend to stick to their preferred phone manufacturer. Nokia fans are very excited about the new phones. Android users don't have anything better to switch to. BlackBerry users will never switch to other phones because of the great (subjectively speaking) physical keyboard.
The question is: what's going to happen to the iPhone and the WM7? I think the waters are too blurry at this time, so we'll patiently wait and see what happens.
EDIT: If you are an Android programmer, you must check out http://adrianvintu.com/blogengine/post/Colored-Logcat-Script-for-Windows.aspx.
CodeProject