With the increasing popularity of mobile applications, many people venture in publishing comparisons of the developer experience in each environment. About a year ago, David Green published a thorough review of both environments while John Blanco published last week a comparative analysis of the iPhone and Android Development Environments. Both Dave and John agree:
using Java is much better than Objective-C. Private methods, inner classes, anonymous classes, generics, better function syntax, and a much wider plethora of 3rd-party code are just a small smattering of the advantages of Java. It’s no contest.
John and Dave disagree on Xcode vs Eclipse:
[John] I used to love Eclipse. I could master one IDE and get benefits for whatever work I do. It’s been over a year since I had to use Eclipse [...] and coming back has been… …a horrible experience… I don’t know how it happened. Eclipse is bloated, slow, and the simple act of changing editor contexts (XML vs. Java vs. Android Manifest, etc.) is mind-numbing. It takes seconds. [...] it’s making for a *miserable* experience doing Android work. Contrast this with XCode, XCode is a delight to work with. It’s sleek, lightning-fast, and I never see any slowdown when typing in code. I took XCode for granted for sure. XCode in a landslide.
Dave sees Eclipse incremental compiler as a major benefit of the Eclipse environment. For him content assist does not work well and Xcode opens way too many windows:
XCode is so shockingly bad that I almost don’t know where to start. Here’s a minimum list of things that I think need fixing in order for XCode to become a viable IDE:
Dave likes however the iPhone's Interface Builder.
From a simulator's perspective, John sees several limitations to the iPhone simulators with no real possible emulation of the GPS or accelerometer's capabilities. But he was impressed by its accuracy:
I hardly ever see a problem in a device that I don’t see in simulation. It runs fast, I can shut it down whenever, I can reset it easily, I can change languages, and so on. Android’s Emulator, on the other hand, is the worst emulator I’ve ever seen. It’s worse than BlackBerry’s — which is saying something. Sometimes I run an app and it just doesn’t run anymore on the emulator and I have to restart the thing. It’s also horribly slow. I once times an activity as taking 8 seconds to display. This may be related to my Eclipse issues as well, but it must be noted because I have *none* of these problems with iPhone development. Every Android developer I run into says they don’t even use the emulator anymore, opting to run the app on the device directly.
Dave sees the power of a decade relentless improvements in Java Development with a full featured debugger, the ability to use JUnit, along with memory profile tools.
I wrote my first line of Objective-C, 20 years ago this fall. I recall being such an amazing experience and couldn't stay away from Penn State Computer Lab for very long. It is difficult to imagine for most people that Xcode was available, pretty much as it is today, in such a remote past (as NeXTStep). Interface Builder, the foundational element of NeXTStep, was the brainchild of Jean-Marie Hullot who started working on it in 1985 and NeXTStep lead Tim Berners-Lee to build the foundation of the Web at CERN. Along with Jean-Marie, people like Jack Greenfield who developed the first ORM tool, established a strong foundation for model-driven engineering. With such an innovative past, it is no surprise to see Xcode still around in 2010. But is it still in line with its time? Is it still ahead? Could it be improved? is Objective-C a modern enough language with all its recent additions, or is Xcode falling behind and will quickly lose its de facto popularity for more advanced, more model driven tools? We could even question if MVC has a future? or are the concepts of Android Intents and Activity way superior?
What is your take on it?