Skip to main content

Eclipse vs. Intellij for Android, PlayN, Google App Engine, and Python Development

I can't figure out whether I should use Eclipse or IntelliJ.

Eclipse is good in that it's open source and free. Furthermore, Google has released several plugins for it such as the ADT (Android Developer Tools) plugin and the Google Plugin for Eclipse. However, Eclipse generally leaves me feeling confused, overwhelmed, and out of control. I spent two days reading a bunch of tutorials, but I still feel like I can't do what I want. I installed Aptana Studio 3 (which includes PyDev) in order to play around with my Python Google App Engine project. However, I couldn't figure out how to do two things: 1) update the PYTHONPATH for my project to include a few project-specific directories 2) use two space indents in Python code just for this project (which is the standard at Google).

On the other hand, there's IntelliJ. I've never used IntelliJ for Java development, but I've used PyCharm and RubyMine for Python and Ruby development. The downside is that it's fairly expensive. The upside is that it's really good. It doesn't leave me feeling confused, overwhelmed, and out of control. In general, I'm able to get it to do what I want. Furthermore, the IDEAVim keybindings are pretty good (not as good as the JVi plugin for NetBeans, but still pretty good).

I'm hoping to start with a toy project that uses the PlayN framework (e.g. Java), Android, etc. It'd be nice if I could use the same IDE for Java, Python, web stuff, etc. I don't really know all the various Google APIs such as Google App Engine for Java and Android, so an IDE that can guide me along would be helpful. It seems like the only solution is to use Eclipse for the Google stuff and IntelliJ for Python, Ruby, and web stuff. I haven't purchased a license yet, but I did win a license for RubyMine which might be applicable.

I just read Android Development: Eclipse vs. IntelliJ IDEA which said a) IntelliJ is way better b) all of the Android tools are still accessible outside of the IDE anyway. I also noticed that IntelliJ has come out with its own Android plugin, and it's even open source. I'm leaning toward IntelliJ, but I hate being the only one around using a certain tool. Any advice you guys have would be welcome.

(By the way, I'm sure someone is going to come along and plug Vim, Emacs, or TextMate. I'm personally a Vim diehard. However, I've come to appreciate the benefit of using Vim keybindings within a larger IDE. YMMV.)


Unknown said…
you forgot nano (heathen!)...
verte said…
My workplace use IDEA consistently (for java and ruby development). Now, I admit that I don't much like their business model and I'm more familiar with Emacs internally, but IDEA is just consistent. It looks beautiful, gives you enough 'background features' to say 'this is a well designed IDE' without bogging down your machine, and the datamodel it uses internally is quite nice too. I've not tried PyCharm, but Emacs (which I use for python and lisp) feels a bit more comfortable in dynamic languages than IDEA does with Ruby and JavaScript to me.
Chai said…
Yeah, go the intellij. I actually used my own money to buy a copy, ie. not paid for by work cos they are too scummy.
And that is a very big statement, esp if you know my relationship with my money.
Greg said…
For Eclipse, just go to Project, Properties, then PyDev - PYTHONPATH.

For the indent, Window, Preferences, then PyDev -> Editor, Tab length 2 and replace tabs with spaces. This is a workspace setting - will affect all projects.
jjinux said…
Thanks, guys.

Greg, is there any way to set the indentation settings for Python specific to the project? In general, I want tabs to show up as 8 space if they're already there, but when I hit the tab button, it should result in 4 spaces for open source projects and 2 spaces for Google projects.
jjinux said…
Greg, do you have any reason for preferring Eclipse over IntelliJ aside from cost?
Fabio Zadrozny said…
Hi Shannon, unfortunately, there's currently no way to specify the indentation on a per-project setting in PyDev -- although now that you complained, I'll probably add that option pretty soon :)

A solution could be having one workspace for Google projects and another for other projects (but that depends if you want to edit both at the same time or not).

Also, have you read the 'official' getting started? ( -- and it's nice to get used to at least the keybindings in bold at )

-- If you couldn't figure something looking there it's probably my fault, so, it'd be nice to know so that I can fix it.

And the last thing, I know that getting to a new environment can be challenging, and I'm constantly trying to make things easier to get started in PyDev, so, if you could write me thoughts where you think it could be easier or more straightforward (or where you feel lost), I'd really appreciate it ( you can e-mail me at fabiofz at gmail dot com ).


jjinux said…
I just installed IntelliJ Ultimate. Then I installed the IdeaVIM plugin and the Python plugin. I'm a happy camper. It's amazing how much better IntelliJ works!
jjinux said…
Hey, Fabio, sorry I didn't see your comment. Thanks for the very useful response and all the work you've done on PyDev. I wish you nothing but the best of luck!
zach49 said…
A recent Part 2 of this comparison is worth checking out. ( Looking for an IDE that can support Python, Ruby, RoR, PHP, and Java as well. Really appreciate his taking this in-depth approach, coming back for a followup.
jjinux said…
Useful. Thanks!

Popular posts from this blog

Drawing Sierpinski's Triangle in Minecraft Using Python

In his keynote at PyCon, Eben Upton, the Executive Director of the Rasberry Pi Foundation, mentioned that not only has Minecraft been ported to the Rasberry Pi, but you can even control it with Python. Since four of my kids are avid Minecraft fans, I figured this might be a good time to teach them to program using Python. So I started yesterday with the goal of programming something cool for Minecraft and then showing it off at the San Francisco Python Meetup in the evening.

The first problem that I faced was that I didn't have a Rasberry Pi. You can't hack Minecraft by just installing the Minecraft client. Speaking of which, I didn't have the Minecraft client installed either ;) My kids always play it on their Nexus 7s. I found an open source Minecraft server called Bukkit that "provides the means to extend the popular Minecraft multiplayer server." Then I found a plugin called RaspberryJuice that implements a subset of the Minecraft Pi modding API for Bukkit s…

Apple: iPad and Emacs

Someone asked my boss's buddy Art Medlar if he was going to buy an iPad. He said, "I figure as soon as it runs Emacs, that will be the sign to buy." I think he was just trying to be funny, but his statement is actually fairly profound.

It's well known that submitting iPhone and iPad applications for sale on Apple's store is a huge pain--even if they're free and open source. Apple is acting as a gatekeeper for what is and isn't allowed on your device. I heard that Apple would never allow a scripting language to be installed on your iPad because it would allow end users to run code that they hadn't verified. (I don't have a reference for this, but if you do, please post it below.) Emacs is mostly written in Emacs Lisp. Per Apple's policy, I don't think it'll ever be possible to run Emacs on the iPad.

Emacs was written by Richard Stallman, and it practically defines the Free Software movement (in a manner of speaking at least). Stal…

ERNOS: Erlang Networked Operating System

I've been reading Dreaming in Code lately, and I really like it. If you're not a dreamer, you may safely skip the rest of this post ;)

In Chapter 10, "Engineers and Artists", Alan Kay, John Backus, and Jaron Lanier really got me thinking. I've also been thinking a lot about Minix 3, Erlang, and the original Lisp machine. The ideas are beginning to synthesize into something cohesive--more than just the sum of their parts.

Now, I'm sure that many of these ideas have already been envisioned within, LLVM, Microsoft's Singularity project, or in some other place that I haven't managed to discover or fully read, but I'm going to blog them anyway.

Rather than wax philosophical, let me just dump out some ideas:Start with Minix 3. It's a new microkernel, and it's meant for real use, unlike the original Minix. "This new OS is extremely small, with the part that runs in kernel mode under 4000 lines of executable code." I bet it&…