J2ME:
.The Battery life on J2ME phones is typically significantly better than Android. Android phones with a lot of use typically need to be charged every night. Further, their charging requirements will require a voltage charger so some solar charges that work on Nokia phones cannot charge a Smart phone like an Android.
In situations where keeping phones charged is a problem, J2ME is recommended. J2ME phones can often be used regularly for days before needing their battery recharged.
.J2ME can do significant multimedia playback using images, audio, and video. However, for Image capture or bar code use cases, Androids are recommended.
.J2ME can do GPS collection, however, this tends to make the phone as expensive as an Android. Additionally, GPS on J2ME requires running the S60 operating system, which is complex and generally less liked than the streamlined S40 operating system used in most CommCare projects.
.J2ME can do significant multimedia playback using images, audio, and video. However, for Image capture or bar code use cases, Androids are recommended.
.J2ME can do GPS collection, however, this tends to make the phone as expensive as an Android. Additionally, GPS on J2ME requires running the S60 operating system, which is complex and generally less liked than the streamlined S40 operating system used in most CommCare projects.
.J2ME displays are often optimized for visibility in very bright conditions, but
are physically much smaller.
It is more difficult to share video or image content between people using the j2me screen, since it is smaller. The viewing angles are sometimes better than on resistive Android screens, however.
.CommCare J2ME supports "sense" mode, which is designed to be used by users with very low technical capacity and has been successful with illiterate first-time-phone users in the past with minimal training.
The app is also very familiar to users who are used to using S40 phones for advanced tasks like web browsing, although in mixed populations (of low and high technical capacity users) who are forced to share the same app, advanced users are often frustrated at the inefficiency of the sense interface.
.J2ME is recommended for very, very low-technical capacity users, or for users who are fairly comfortable with using Nokia style phones, but may be limiting for very advanced users.
.J2ME phones require a great degree of (fairly finicky) manual configuration which can be wiped when it runs out of battery or a SIM card is moved, increasing the need for on-hands maintenance.
There is better support for J2ME phones in most local shops, although there have been problems in the past with local establishments swapping batteries (authentic for knock-off), re-flashing phones with invalid operating systems, filling the memory card with multimedia, or deleting the multimedia files used by the CommCare application.
.J2ME phones are in general, very robust, and designed for repetitive use in challenging environments.
.J2ME phones still tend to be cheaper than Android, although that cost gap is rapidly narrowing.
Cheap J2ME phones tend to be fairly robust, and may not need to be replaced as often as cheap Android phones.
.In 2010, Nokia made a strategic decision to move away from lower end phones and adopted the Windows Mobile operating system. This leaves a significant amount of uncertainty about how much longer low end Nokia phones running the Symbian Operating System will be available in the marketplace.
.Automatic application update is possible on J2ME phones, but isn't as reliable as on Android devices. Furthermore, only application content (form questions, new forms) can be updated, and new versions of CommCare need to be installed manually. Updates to multimedia require manual intervention as well.
Android:
.open platform http://source.android.com
.can compile custom firmwares - good for hackers and other
.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 vertion 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 - ie 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 MS released WM7 and
broke compatibility with 6.5
Windows Mobile 7 :
.closed platform
.MS breaks compatibility with WM 6.x - this is very bad
.programming environment is Silverlight and XNA
.no native programming ie 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 MS marketplace
.no Adobe Flash support