It has now been 6 month since I have switched (my job and) my Java IDE – after years of Eclipse I am now using JetBrains IntelliJ IDEA. Time for a recap: Here is my list of the top arguments why I prefer one IDE over the other:
Responsiveness, Performance: IntelliJ
Both IDEs take quiet some time to launch, and both seem to slow down after hours of heavy work – but what I really like about IntelliJ is how it keeps in sync with file system changes:
When updating files outside the IDE (e.g. pulling in remote changes or switching branches), IntelliJ seems to be up-to-date almost immediately – no remarkable performance impact when doing a full text search right afterwards. Eclipse on the other hand needs a “F5” in this situation, and then you may have to wait a minute or two (refreshing, building workspace) until you even may start the search.
Stability: IntelliJ
Both IDEs will crash from time to time (one or two times a week, in my case). But until now, whenever IntelliJ has crashed, I didn’t lose any data – the autosave mechanism seems to work pretty well. With Eclipse, in some situations the last few minute’s coding was gone; and I even had two or three disastrous crashes which left the workspace unusable (I had to recover the “.metadata” directory from my last backup).
Usability: Eclipse
This is a very subjective area. Opposed to most of my colleagues I have the impression that I can work faster with Eclipse – less keystrokes, less mouse movements; and rarely needed features are easier to find.
I also prefer the Eclipse views over the tool windows in IntelliJ; and the handling of open files (in the editor) is more intuitive in Eclipse.
Maven Support: IntelliJ
Many won’t believe it, but m2eclipse actually works – it is just a very long way to get there (I am talking of multi-module projects with a complicated build process here). I think Eclipse just aims too high when trying to support every possible Maven feature. IntelliJ on the other hand just supports the most important Maven features – but these are rock-solid: I like that approach.
Compiling: Eclipse
I am used to having all compiler errors and warnings right at hand – and the Eclipse incremental compiler together with the “Problems” view are doing a great job here.
Task Focus: Eclipse
Since I am a person who is incapable of doing multiple things in parallel, I loved working with Mylyn. I was really disappointed to find out that IntelliJ only has a very rudimental task support (which boils down to assigning a SCM changeset and a list of open files to a tracker issue).
Conclusion
It is no coincidence that this match ends without a winner: this is exactly how I feel about these two IDEs.
Sure there are a lot of other features that could be added to this list (for example some special plugins or support of other languages or frameworks), but I left them because either I have no opinion in favor of one IDE, or because they are just not that important for me.
But maybe I should add one last point (which is not valid for me right now, since I have an IntelliJ license at hand):
Pricing
While the “Ultimate Edition” of IntelliJ costs about 500 USD, Eclipse is free (the IntelliJ “Community Edition” is just too restricted for serious development).