Google’s Android Studio is a development tool for Android based on the IntelliJ IDEA platform, one that managed to attract a lot of hype when it rolled out in mid-2013. Roughly a year later, the platform is still in “early access preview,” and work on it is ongoing. Eclipse, on the other hand, is the granddaddy of IDEs; although it doesn’t offer native Android support, it does have some nice tools to help you build Android applications—one such tool is the Google Plugin for Eclipse, made by Google. So let’s compare Eclipse and its Google-made Google Plugin with Google’s own Android Studio, developed with the help of the people who make IntelliJ IDEA. Which one should you use? Before we can offer any such advice, several things need to be factored in:
- Are you a small (i.e. one or two developers) shop? Or a huge Fortune 1000 corporation with a team of dozens or even hundreds of employees?
- Is this a new project?
- If this is not a new project, are you currently using Eclipse and considering switching to Android Studio?
Android Studio Overview
- Flexible Gradle-based build system
- Build variants and multiple apk file generation
- Code templates to help you build common app features
- Rich layout editor with support for drag and drop theme editing
- lint tools to catch performance, usability, version compatibility, and other problems
- ProGuard and app-signing capabilities
- Built-in support for Google Cloud Platform, making it easy to integrate Google Cloud Messaging and App Engine
- And much more
Drag and Drop Gui Designer
One supposedly great feature of Android Studio is its layout designer with a drag-and-drop interface. But the reality is, unless you’re a Visual Basic aficionado who’s spent years drawing out sophisticated 3D interfaces with chiseled buttons and can’t quite break the habit, the amount of time you’re going to spend on drawing out the interface is minimal. Yes, you want a good, usable interface—but if you’re writing a serious application for serious work, most of your time will be spent on code, not tweaking visuals.
The more time you spend as a programmer grinding out code, the more you appreciate code completion. For me personally, the most important part is when the IDE tells me the member names of an object. In general, I found that the code completion is better on Android Studio than Eclipse, which seems to get a little confused at times and doesn’t always give accurate results.
Android Studio uses the Gradle set of build tools; in fact, it’s so integrated, it’s next-to-impossible to use a different tool. In other words, you’re stuck: if you’re moving from Eclipse to Android Studio, and not already using Gradle in Eclipse (which offers decent support via plugins), you’re going to have to switch. That said, Gradle is a really great tool, and if you do make the decision to go with Eclipse, I nevertheless encourage you to look at Gradle’s features, try it out, and see if it fits with your project. And if you want to go with Android Studio, don’t despair about being stuck with Gradle; it’s quite good.
Google Cloud Platform
Android Studio has native support for Google Cloud Platform, which allows you to run server-side code using Google App Engine, along with other tasks (such as backing up your users’ data). This is a nice addition, as you probably don’t want your Android app to be isolated. (Of course, you can integrate with other cloud platforms, but Android Studio makes Google integration easier.) Google allows you to create projects in its cloud console, which isn’t just for providing the server for your Android apps—you could use it to create Web-based applications that interact with the Google Maps platform, for instance, or software on your own servers that integrates with Google Docs. Android Studio also offers tools for integrating apps, testing and running server-side code locally, and deploying to a Google backend server; in other words, everything you need (at least for a start) is there. But all of this functionality is also available in Eclipse, via the Google Plugin for Eclipse. Yes, you can create a server application within Eclipse and deploy it to Google’s servers. Additional tools let you integrate with the servers such as the cloud database.
Eclipse is big, and perhaps a bit cumbersome. I’ve been using Eclipse since it first became popular a decade ago, so I know my way pretty well around its interface and quirks. (I do remember being a bit overwhelmed at first, but let’s face it: most IDEs are overwhelming when you first start using them.) With that in mind, I find that the menu items and tools in Android Studio tend to get me where I need to be a bit more quickly and easily compared to their counterparts in Eclipse, even with the Android plugin. That being said, there’s another aspect to the interface: Android Studio was built specifically for Android, while Eclipse was built to be a general all-purpose IDE that can be used with any platform and any language (although Java is clearly the main focus).
Workspaces and Projects
One thing that I’ve always felt is a bit unnatural in Eclipse is the way it deals with workspaces. When you want to work on multiple projects in Eclipse, you combine them into a workspace. In order to switch to a different workspace, you select the path, and then Eclipse restarts. That always seemed awkward to me. If you want to copy projects between the workspaces, things can quickly turn into a mess—yes, there are proper ways to do it, but it’s very easy to screw up. I’m not particularly fond of Microsoft Visual Studio, but I’ve used it in recent years more than any other IDE (due to paying customers needing work in it), and I will say that managing projects and workspaces (called solutions) in Visual Studio is far easier than they are in Eclipse, in my humble opinion. As for Android Studio, you still have the equivalent to Eclipse’s workspaces and Visual Studio’s solutions. With Android Studio, everything is encapsulated into a project. (So in this sense, a project in Android Studio is more like a workspace in Eclipse.) Within your project you have modules; your main set of code, such as the app you’re building, will likely be one module. If you have a library, that will be another module. But other things qualify as a module as well, such as build scripts. To me, this makes a good bit more sense and seems much more natural to me. (Also, for what it’s worth, this is a concept Android Studio inherited from IntelliJ IDEA.)
Let’s face it: Eclipse is old. Some may say it’s mature, and that it continues to evolve; that’s true, to a certain extent. But as software engineers, we’ve all worked on legacy systems that need updating, and found that the old code just doesn’t really fit with the new things. Eclipse was certainly built to be an expandable platform; but the core product, the IDE itself, is starting to show its age. Competition is inevitable. That being said, Android Studio is still in preview mode, without an official release, even if that preview is in pretty fine shape—its status certainly shouldn’t prevent you from using it, at least in my opinion (others will disagree). We’re talking about the IDE, not the platform—you’re writing Java code that runs under Android’s Java runtime engine along with Google’s servers, both of which are mature. If you’re writing good code, you’ll get good results, whether you use Android Studio or Eclipse to produce that code. Another, perhaps more important issue with switching to Android Studio is Gradle. It’s not hard to switch to Gradle, but if you have a mature project with a build process in place, switching to a different tool isn’t necessarily something you can do on a whim. If your team is a huge corporation with layers upon layers of middle management, such a switch usually requires somebody up that path to agree to it. From a technical perspective, switching might not be difficult—but from a managerial perspective, it might be a nightmare. If you’re a small shop with one or two developers and don’t have a middle manager getting in the way, then switching your build process to use Gradle is pretty easy; smaller shops are usually far more agile and more adept to making changes (and producing software more quickly, for that matter, without 15 six-figure project managers for every two developers, but that’s another story). If you’re using Eclipse, I encourage you to try out Android Studio for a few days and see how it works for your project. If it fits the bill, then go ahead and switch. This is true especially if you’re relying on the Google plugin for Eclipse, as Google seems to have more focus on Android Studio, and either way you’re tied to Google. In a similar vein, if you’re starting a new project from scratch, I say first give Android Studio a try, especially if you’ve been using Eclipse for years. Create some of the sample applications and see how comfortable you are in it. If it just doesn’t set right with you, then go back to Eclipse. Otherwise, give it a chance.