Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

From your experience in developing mobile apps, which mobile development platform is easiest to develop? iOS, Android or WinPhone 7? And why would do you think it is the easiest? If you can order it from easiest to most difficult it is even better.

share|improve this question

closed as primarily opinion-based by Martijn Pieters, gnat, Bart van Ingen Schenau, MichaelT, GlenH7 Jun 25 at 21:40

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
This can greatly depend on the programming background of the developer in question, especially if it's only one of C, C#, or Java. –  hotpaw2 Apr 26 '11 at 6:15
    
I guess all of them via C# Xamarin. –  Den Jun 25 at 10:32
    
@Den: keep in mind that even with Xamarin, the GUI development of the app is still platform-specific. –  rwong Jun 25 at 10:48
1  
@rwong: how about "Build native UIs for iOS, Android and Windows Phone from a single, shared C# codebase" - xamarin.com/forms –  Den Jun 25 at 10:52
    
@Den Xamarin Forms was released just a month ago, and when it is compared to each platform's GUI features, you will see the limitation of Forms. –  rwong Jun 25 at 10:56
add comment

2 Answers

up vote 24 down vote accepted

From my experience this depends heavily on the kind of application you want to do. Assuming that familiarity with the platform is not an issue.

If you need to develop a "programming logic", "algorithms heavy" application:

WinPhone 7 -> Android -> iOS (ascending order of difficulty)

Reason: WinPhone supports "out of the box" a richer set of languages strong in that area (e.g. C#, F# vs. Java or Objective-C) and has a pretty good standard library for "backend" stuff (roughly equal to Android, but far surpassing Cocoa, which is just embarrassing in this regard).

Objective-C is missing generics and its collection API is missing broad support for map/filter/fold etc. operations (the basic support is there thanks closures/blocks) and the underlying implementation of your datastructure changes with the number of elements it stores, which results in hard to predict performance when e.g. using NSArray, NSDictionaries etc. combine this with a pretty verbose syntax, outright insane method naming conventions and glaring holes in its API (e.g. no Regexes, no Parsers) and you end with huge amounts of boilerplate when implementing even simple algorithms.

Java is "just" hampered by a lack of closures (with the resulting code bloat transforming collections) and non reified generics (which are not a huge problem) and needing to check for Null Pointer Exceptions more often than you'd like. All of which result in non trivial amounts of boilerplate when trying to express anything where you want to transform one set of data into another set of data (which most algorithms are about in essence). F# (and to a lesser extend C#) don't come with this baggage, which in my experience results in a lot less code when doing "algorithm stuff".

If you don't mind the extra work you are able to use Clojure and/or Scala on Android which would put it in this regard in the same spot as WinPhone. MonoTouch/Mono Android allow the iPhone to come close in this regard, too.

If you need to develop a "UI intensive", "interaction heavy" application my ranking is:

iOS -> WinPhone 7 -> Android (ascending order of difficulty)

Reason: This is IMHO highly subjective, but Cocoa Touch gives you a very rich set of beautiful UI widgets and Objective-C - archaic as it is - is very good for handling "UI stuff" (Key-Value-Coding, Responder Chain etc.). WinPhone seems interesting in this regard (delegates/lambdas are very useful for handling asynchronous events), so I would say it is a close second. Writing GUIs with Android is IMHO unnecessary complex, some of this being a result of Java's lack of dynamism and/or closures.

If you need to get really close to the metal - abusing the hardware to the best of you abilities, I would rank them as such:

Android -> iPhone -> ... -> WinPhone 7 (ascending order of difficulty)

Reason: Android allows you to develop native apps and distribute them (in theory) without restrictions. On the iPhone there is no other option, but AFAIK Apple restricts you access to the OS a bit more than Android does. Apart from that I would say both are really close. WinPhone completely sandboxes you.

There are of course multiple other possible scenarios with corresponding rankings.

share|improve this answer
1  
Nice. Thanks for the detailed explanation. Very much appreciated. –  jpartogi Apr 25 '11 at 13:19
    
Can you elaborate more why Windows Phone 7 is more suitable for heavy logic type apps? Shouldn't Objective-C and Java be capable for that as well? Also another category that you missed is game development. Which platform would be easier? –  jpartogi Apr 25 '11 at 16:35
3  
Objective-C is missing generics and its collection API is missing broad support for map/filter/fold etc. operations (the basic support is there thanks closures/blocks) and the underlying implementation of your datastructure changes with the number of elements it stores, which results in hard to predict performance when e.g. using NSArray, NSDictionaries etc. combine this with a pretty verbose syntax, outright insane method naming conventions and glaring holes in its API (e.g. no Regexes, no Parsers) and you end with huge amounts of boilerplate when implementing even simple algorithms. –  Alexander Battisti Apr 25 '11 at 21:49
1  
Java is "just" hampered by a lack of closures (with the resulting code bloat transforming collections) and non reified generics (which are not a huge problem) and needing to check for Null Pointer Exceptions more often than you'd like. All of which result in non trivial amounts of boilerplate when trying to express anything where you want to transform one set of data into another set of data (which most algorithms are about in essence). F# (and to a lesser extend C#) don't come with this baggage, which in my experience results in a lot less code when doing "algorithm stuff". –  Alexander Battisti Apr 25 '11 at 21:55
    
I have no experience at all with Game Development, so I can't comment upon that. –  Alexander Battisti Apr 25 '11 at 21:57
show 4 more comments

Which mobile development platform is easy to develop is completely depends on the sort of app you want to build, and also on what your background is. If you have strong command over Java then it becomes easy to learn android app development and if you are good in objective C then you can go ahead with iPhone app development. Choosing mobile development platform is completely depends upon your choice and creativity.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.