What a wonderful approach to development.<p>Skip the ideological critiquing and start shipping some awesome products..<p>I guess that is really what separates the great developer from the good developer.
As an iOS developer, this is probably the best comparison between iOS and Android development that I've read. I'm pretty scared of Eclipse and the slow-as-hell emulator doesn't sound fun, but coding layouts that don't involve lots of "how tall is this text for this given width?" calculations is a welcome addition.
This article was damn near perfect. I much prefer this style to "the problem with X" or "Why X will never succeed". This person isn't interested in platform evangelism, he/she wants to ship. A very inspiring attitude to have.
Seems like a very balanced article to me. The comments about Eclipse made me laugh (I just had to start using Eclipse for a different reason and hate it with the heat of a thousand suns).
A couple of points...<p>> Android has a system of layout containers (similar to HTML)<p>It would be more correct (I think) to say it's inspired by other Java layout managers, Swing and SWT aren't a million worlds removed from Android (but I can't really expect someone new to Java to know that!)<p>And the emulator. The Android emulator is not slow. I have a netbook, which is an absolutely fantastic way of finding out which applications do far too much but you never notice because your computer is very fast. Team Fortress 2 is slow. Eclipse is slow. I tried booting the Android emulator and gave up waiting <i>after an hour and a half</i>.<p>Overall, awesome article. Refreshing to see someone providing a useful comparison between the two rather than arguing over one or the other, and as a Java developer who knows a little about Android, I feel I just learnt a lot about iOS. I'm actually amazed at how much they have in common, you wouldn't think so from the arguments!
Eclipse is to IntelliJ as Android is to iPhone.<p>Anyone who's used both IntelliJ and Eclipse as IDEs for Java development knows what I'm talking about. Eclipse, like Android, emphasizes "openness" and customizability while IntelliJ, like the iPhone, emphasizes "It Just Works" coherence and integrity.<p>If you like IntelliJ's approach, you might want to try AppCode, a development environment for Objective C made by the makers of IntelliJ, JetBrains. <a href="http://www.jetbrains.com/objc/" rel="nofollow">http://www.jetbrains.com/objc/</a>
Totally agree with the other comments. This is the first honest and realistic writeup about "Android vs iOS development" I've read.<p>I started with Android myself and started porting an Android app (which I wrote) to iPhone and I had exactly the same problems iOS developers have when starting with Android. So it's just a matter of what you're used, too. From my experience some things can be done quicker on iOS, others on Android. However, that doesn't necessarily mean better, because providing a framework for a special case usually comes with the cost of restricted flexibility.<p>I also agree that Eclipse is a behemoth and quite overwhelming in the beginning, but there is a great tool for any code base that is larger than your typical pet project. Especially when having to read, understand and trace down other people's code.
iOS developer here. Releasing first android version of my app this week. Even though I didn't do the coding, I've taken a look at the code and done quite a bit of testing. The part about animations is totally true. Animations are much faster and smoother on my iPod 3rd Gen than the equivalent animation on a Droid Incredible, which has much better hardware! We've tried to optimize as much as possible, but we are realizing that there is just no way to match the iOS version's speed and responsiveness.
Good overview and I recommend this detailed dive into the deep end by a HNer:<p><a href="http://clayallsopp.posterous.com/building-an-android-app-from-scratch-or-this" rel="nofollow">http://clayallsopp.posterous.com/building-an-android-app-fro...</a>
The biggest complaint seems to be that Android is software rendered. As of 3.1 (i think, maybe 3.0) this is no longer an issue as a single line in the manifest will cause Android to automatically accelerate your drawing if possible.<p>I've yet to actually try it though :)
What a great comparison. Admittedly I haven't researched this but I was surprised to read that the UI components in iOS were based on OpenGL. That's pretty cool! Hats off to Android for their layout manager. I like when I use an app on Honeycomb that scales well as opposed to blowing up the pixels to fill the screen.
Question to Android devs with iOS experience: are there any tools available which would be counterpart for Instruments?
Instruments do not get mentioned in these comparisons for some reason, I think these are great tools to debug and improve performance.
Interestingly (but inevitably) as a java developer who first learned Android and then moved to iOS, the sticking points he mentions are exactly the same ones I found, but the other way around.<p>I think Eclipse makes sense if you think like a java coder, Xcode not so much, and Objective-C will fry your mind...<p>That said, Eclipse and the Android SDK is a pain to install even if you are a java wizard.
Nice overview. I have to disagree with the assessment of Eclipse though. Under one app you can build and debug Java, Python, Ruby, HTML, Javascript, and Air apps. Once you get used to the workflow, it's incredibly productive.<p>As for the emulator, unless you want to invest in a large set of devices, it's the only way to test against different screen sizes and device profiles. Even though it's nice to have a device for debugging, you'll need to make peace with the emulator to make sure your app doesn't go all wonky on devices other than your exact model.
Thanks for this article it just made me feel happy. I so tired of flame wars regarding IOS x Android that I barely read Engadget anymore. Many people dont understand why I have a Macbook, an Android phone and an iPod, looks like you MUST took a side and be an evangelist.
Fastdev makes the Android Emulator usable: <a href="http://developer.appcelerator.com/blog/2011/05/titanium-mobile-intro-series-fastdev-for-android.html" rel="nofollow">http://developer.appcelerator.com/blog/2011/05/titanium-mobi...</a><p>After you suffer the initial emulator load, changes appear in the app by simply bouncing the app. It's one big win for Titanium.
"It takes the Android Emulator ~2 minutes to boot up on my perfectly-modern machine. But what really hurts is the edit/debug cycle. Every time I change a bit of Java and need to rerun the app, it takes about 30 seconds to redeploy and start up in the Emulator. Compare that to 5 seconds on the iOS Simulator. It may not sound like much but remember you’ll be doing this hundreds of times throughout your day."<p>I do not have any experience with iOS development but I can vouch for how hard it is to use the Android Emulator. I just recently submitted an Android application for a programming course and if it were not for having an Android mobile device to replace the emulator I would not have completed the project in time. The Emulator is slow and buggy and made it hard to test new code.<p>If you are interested in developing an Android application deffinately check it out but take this guys advice and get a device to test it on. It will save you a lot of time.
Nice well-written article. I just did the same sort of article myself telling about my experiences going from IOS to Android:<p><a href="http://www.smallcloudbuilder.com/apps/articles/410-crossing-the-chasm-converting-an-iphone-app-to-android" rel="nofollow">http://www.smallcloudbuilder.com/apps/articles/410-crossing-...</a>
> Apple has made it pretty easy to start writing iOS apps. Of course, Step One is “Buy a Mac.” Easy! Then just download the free Xcode Installer from the Mac App Store, and start writing code when it’s done.<p>> Android is a bit more involved. You can download the SDK easily, but to actually start writing code, you’ll want to setup Eclipse and install Google’s ADT Plugin.<p>Buying and setting up a new computer is "Easy!" but installing Eclipse is "more involved"? Having to sign up for a $99 developer program is omitted. The size difference, of a couple hundred mb for Eclipse vs 4gb for Xcode is omitted.
Didn't Apple just release Auto Layouts for Cocoa? Will Auto Layouts come to iPhone?<p><a href="http://news.ycombinator.com/item?id=2788608" rel="nofollow">http://news.ycombinator.com/item?id=2788608</a>
I hate to be picky about this but in all the time I've been doing iOS development and throughout everything I've ever read I have never seen anything to suggest that iOS using OpenGL for all of it's drawing (simulating a 2D interface in a 3D environment like the article suggests). Drawing is done using the Quartz system and animation is handled by Core Animation (which creates "an illusion of motion").
Why do you "have to kiss that silky smooth scrolling goodbye" if you setup your UITableViewCells in Interface Builder?<p>I've used it for all of my apps and the scrolling is just as fast as any of Apple's native apps. Interface Builder just packages up all that initial layout code and then it is executed when the nib when it is unpackaged. After that there is no difference.
If you're starting Android development, just save yourself the pain and just use the IntelliJ IDEA community edition.<p>The Android plugin included doesn't have fancy UI stuff, like for designing interfaces or visually editing the XML configuration files, but it does have code-completion of XML tags and properties and it works better as a code editor, being less painful.
Wow. I never expected that much negativity for the Android side. I've dabbled in both but haven't done Android since over a year ago. I was (and still am) really looking forward to using Eclipse and reading Java. I just get very tired of XCode.
Clicking their site <a href="http://www.meridianapps.com/" rel="nofollow">http://www.meridianapps.com/</a> leads to "App Engine Error: Over Quota. This Google App Engine application is temporarily over its serving quota. Please try again later"<p>Ouch!
Great write-up. I read the whole thing and bookmarked it as well for future reference. Thanks for sharing.<p>Which resources (online or otherwise) did you find most helpful?
This is a great and honest article and has changed the way I think about Apple users/developers.<p>Before that, I considered Apple users to be a group of gay douchebags, but today I have learned that there is at least a sane person on the other riverside.<p>(I have neither developed for any smartphone nor do I possess one, so no need for "Stupid FANDROID!1!")
Few Comments.<p>1. The most important thing to think about and say is the market share, fragmentation, monetization issues. Article doesn't pay enough attention to this it, but it still drives why we do what we do. (save, the author was egged on to make the app by their users).<p>A paragraph would be useful. Perhaps something like.<p>Fundamentally, Android is the platform you have to be on to defend the turf. It generally wont make a lot of money, but you have to be there to protect & project mind share. Additionally, it is the dominant mobile platform.<p>2. Development Tools.
You can use IntelliJ Idea. Its a Mature Development Platform, and gives you many options. The article doesn't make any strong arguments against eclipse. The installation/getting started was more involved, but personally, it took me an hour or so, so I don't think it is a big deal. It is useful to separate opinions from facts. Personally, I use emacs bindings in all my editors, and Eclipse is pretty nice to me in general.<p>3. UI Design Tools
This section is written in a way that projects inaccurate information. It implies that you have to use XML as opposed to using a Interface Builder interface. This is not true - there is indeed a drag and drop interface akin to IB in android. The author mentions it as a preview tool. Indeed it is also a design tool.