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!)...
wleslie 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

Ubuntu 20.04 on a 2015 15" MacBook Pro

I decided to give Ubuntu 20.04 a try on my 2015 15" MacBook Pro. I didn't actually install it; I just live booted from a USB thumb drive which was enough to try out everything I wanted. In summary, it's not perfect, and issues with my camera would prevent me from switching, but given the right hardware, I think it's a really viable option. The first thing I wanted to try was what would happen if I plugged in a non-HiDPI screen given that my laptop has a HiDPI screen. Without sub-pixel scaling, whatever scale rate I picked for one screen would apply to the other. However, once I turned on sub-pixel scaling, I was able to pick different scale rates for the internal and external displays. That looked ok. I tried plugging in and unplugging multiple times, and it didn't crash. I doubt it'd work with my Thunderbolt display at work, but it worked fine for my HDMI displays at home. I even plugged it into my TV, and it stuck to the 100% scaling I picked for the othe

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.&quo

Haskell or Erlang?

I've coded in both Erlang and Haskell. Erlang is practical, efficient, and useful. It's got a wonderful niche in the distributed world, and it has some real success stories such as CouchDB and Haskell is elegant and beautiful. It's been successful in various programming language competitions. I have some experience in both, but I'm thinking it's time to really commit to learning one of them on a professional level. They both have good books out now, and it's probably time I read one of those books cover to cover. My question is which? Back in 2000, Perl had established a real niche for systems administration, CGI, and text processing. The syntax wasn't exactly beautiful (unless you're into that sort of thing), but it was popular and mature. Python hadn't really become popular, nor did it really have a strong niche (at least as far as I could see). I went with Python because of its elegance, but since then, I've coded both p