views:

243

answers:

7

Hello guys,

I'm in the middle of development of a client-server "socializing" that is supposed to run on several mobile devices. The project is pretty complex, involving networking, exchanging media, using geolocation services, and nice user UI.

In terms of development efforts, technical risks and extensibility what is the best platform to start with? Taking into the account that the goal is go "live" as fast as possible with the mobile version. And second goal is to cover most users (but first is more important).

iPhone (iPod iPad) Android BlackBerry Java ME, Symbian

I realize that there are limitations on every platform, and there are different aspects to take into the account (for example iPhone has better developer's community then Android, J2ME runs in a terrible sandbox but covers most devices).

Please share your pros and cons. I have the experience only with J2ME, unfortunately I can't evaluate other platforms.

A: 

While applications natively developed for a given platform typically win in terms of platform UI consistency and performance, you could try going for one of the available multi-platform frameworks, such as Rhodes (just to name one). Personally, I do not have any specific experience with Rhodes and only learned about it a couple of days ago (having a closer look is still on my todo list), so please judge the user experience that the framework offers on different devices on your own.

tg
+3  A: 

If you're looking at native applications on the platforms you list, then the development effort required in order from least to most is:

  1. iPhone

  2. Android

  3. Blackberry

  4. Java ME

  5. Symbian

Development effort is largely governed by language/libraries, tooling and fragmentation. Hence iPhone wins (good language & libraries, excellent tooling, little/no fragmentation). Symbian comes last (C++ with limited libraries, poor tools, large fragmentation). Android beats Blackberry on libraries and fragmentation, and Blackberry beats Java ME on fragmentation.

The counterpoint to this is market size, especially among your target user base - Java ME reaches far more devices than any other platform, whereas the Android installed base is still the smallest of the 5.

There's no one right answer, but if reach is important then Java is a good place to start, if time-to-market and user experience are the keys then iPhone makes sense.

It's also worth looking at how easy/difficult it would be to port across to other platforms. There are various cross-platform libraries around such as Airplay or J2ME Polish that might reduce the costs - provided you can implement your application on the cross-platform part.

Malcolm Box
I haven't dabbled in Android, but the jump from iPhone to Blackberry -in terms of annoyances- was vast. For example: to get code signing keys from Apple, I just bought them through developer.apple.com. From RIM, their web form had been down for two weeks, and I had to order keys *by fax*: http://na.blackberry.com/eng/developers/javaappdev/codekeys.jsp
Kevin L.
Symbian should be #1. It supports more choice of languages than any other mobile platform. C++, OpenC, Java, Python, Qt, to name 5. It also has by far the largest install base and all the other good reasons to choose symbian that are based on engineering and not what is the x-factor choice of the moment.
Dynite
@Dynite: it may support several languages, but it's a pig to program in any of them. It's Java is essentially J2ME so it's as good/bad as that platform. Open C can't access most platform functionality. Python is similarly limited.A full "native" application means Symbian C++ and (for devices that aren't yet shipping) Qt. As someone with 10 years experience programming Symbian I can safely say it's not at the bottom of this list because it's not "choice of the moment" - it's there because its development environment is poor.
Malcolm Box
What specifically do you mean by "development environment"?
Dynite
Development environment = all the bits a developer needs to do their work. Specifically: IDE/toolchain (compiler/build)/debugger/programming language/libraries/documentation/signing/distribution. Symbian is a lose in almost all of those cf the competition.
Malcolm Box
I think that's slightly unfair, but putting that aside...The Nokia Qt SDK will make some large strides in many of the areas you mention.
Dynite
+1  A: 

I'd like to speak up for Maemo/Meego(Nokia's/Intel's mobile Linux). While it is in a state of transition and currently Maemo 5 has only one good phone(and a couple of cheap Chinese ones), but I feel that it will soon be big(I like many people believe that Meego will be Nokia's high end strategy and Nokia is the biggest phone maker in the world). Plus the N900 is the coolest phone around.

Also their it basically an open Linux device (pretty similar to standard desktop Linux). The ide QT Creator is great and cross-platform(comes with embedded visual designer and nice documentation broser) but you don't have to use it, there is some support for using your own text editor or ide.

There is no sort of signing key nonsense(I did a student project for the blackberry and have been quite annoyed by keys). Other things I didn't like about the blackberry: windows only eclipse plugins, our team had a lot of trouble figuring out how to add third party libraries to blackberry COD archives . Also some of the Classes are somewhat sparse in a lot of ways especially String/Char, probably since its ME based, I also didn't like the file read/write apis, it felt somewhat awkward, possibly since blackberry apps only recently got the ability to store files(before you could only store/retrieve objects to disk via the persistence layer)..

The preferred Languages are (Gobject C currently but less so for Meego) , Qt flavoured C++ and python. There libraries are nice and the qt ones are especially well documented. Since its a tiny linux box you can have on device debugging (there is also an emulator).

Note I haven't developed anything for Maemo/Meego but I've read a lot about and just fell in love.

Roman A. Taycher
+1  A: 

I think that the best solution might be to start with a smartphone optimized web site. A native app can provide a richer interface, but a well designed web app can come close and will run on any device.

Have a look at the WPTouch for an example of a very good phone optimized web site.

mikerobi
+1  A: 

In line with Roman A. Taycher, I'd like to raise my voice for windows Mobile/Windows Phone. It's has a large installed base, it has the tried and true Visual Studio toolset to develop with, it has the best emulator of them all (it actually emulates the ARM instruction set - you hear that, Apple?), and you can leverage your Win32 experience.

MS-haters - please don't bother responding. I've heard them all.

Seva Alekseyev
+1  A: 

A cross-platform runtime such as Qt or HTML5 are good bets and are portable.

Qt supports many platforms including Symbian, Meego, Linux, Windows etc. It is highly regarded as one of the best programming frameworks around currently.

Qt creator is also a very highly regarded IDE.

HTML can be accessed on nearly everything of course and can there are plethora of tools out there.

Dynite
A: 

It sounds like you need Mobile Community Framework (MCF). It is cross-platform framework to develop network-centric, location- and proximity-aware applications on all modern smartphone platforms (iPhone, Android, Blackberry, Symbian, WinMo - almost all you mentioned, except J2ME). It provide native binaries for all these platforms. With MCF development time can be reduced, as you don't need to code all this network stuff by yourself, but you can just use simple API to send any amounts of data across enrypted connections, via Wi-Fi ad-hoc mode or via special proxy-server.

More info at http://www.uvamobiltec.com.

Haspemulator