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.
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
locked by Yannis♦ Aug 22 '14 at 22:25
This post has been locked while disputes about its content are being resolved. For more info visit meta.
closed as primarily opinion-based by Martijn Pieters, gnat, Bart van Ingen Schenau, MichaelT, GlenH7 Jun 25 '14 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.
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.