Can compile custom firmwares - good for hackers and others
Good framework, extended on each new firmware
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.
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
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
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 Adobe Flash Lite
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
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