Why I prefer IntelliJ IDEA over Eclipse

Over the last couple months, I've received a few emails asking why I prefer IntelliJ IDEA over Eclipse. They usually go something like this:

I keep seeing you recommending IntelliJ. I keep trying it intermittently with using Eclipse, but I feel like I'm missing something obvious that makes so many people think it's better. Granted having the usual plugins incorporated is nice, but other things like the build process and debugger sometimes seems a step back from Eclipse. Could you please blog a '10 reasons why I love IntelliJ' or point me to something that would clue me in?

I grew to love IntelliJ for a few reasons. It all started in 2006 when I decided to migrate AppFuse from Ant to Maven. Before that, I was a huge Eclipse fan (2002 - 2006). Before Eclipse, I used HomeSite, an HTML Editor to write all my Java code (1999-2002). Eclipse was the first IDE that didn't hog all my system's memory and was pleasant to work with.

The reason I started using IntelliJ in 2006 was because of it's multi-module Maven support. Eclipse's Maven support was terrible, and m2e hasn't gotten a whole lot better in recent years AFAIK.

Back then, I used to think everything should be built and run from the command line. A couple years later, I realized it was better to run tests and debug from an IDE. Now I'm more concerned with the ability to run tests and debug in an IDE than I am from the build system.

In 2009, I started doing a lot more front-end work: writing HTML, CSS and JavaScript. I also started digging into alternate languages for these: Jade, GWT, CoffeeScript, LESS, SASS - even Scala. I found IntelliJ's support, and plugins, to be outstanding for these languages and really enjoyed how it would tell me I had invalid JavaScript, HTML and CSS.

My original passion in software was HTML and JavaScript and I found that hasn't changed in the last 15 years. AFAIK, Eclipse still has terrible web tools support; it excels at Java (and possibly C++ support). Even today, I write most of my HTML code (for InfoQ and this blog) in IntelliJ.

In reality, it probably doesn't matter which IDE you use, as long as you're productive with it. Once you learn one IDE well, the way others do things will likely seem backwards. I'm so familiar with debugging in IntelliJ, that when I tried to use Eclipse's debugger a few weeks ago, it seemed backwards to me. ;)

In a nutshell: the technologies I've worked with have been better embraced by IntelliJ. Has this happened to you? Have certain technologies caused you to use one IDE over another?

Posted in Java at Jul 21 2014, 01:33:55 PM MDT 15 Comments
Comments:

My pros and cons of Idea over Eclipse:
Pros:
  • Better integration with plugins in general(Maven, DB explorer) , YMMV. With Eclipse 3rd party plugins very often ruin the experience like Oracle enterprise pack validators which slow dramatically the build
  • snappier and not freezing frequently on large projects.
  • default configuration of formatter and editor more well tuned (but it is often customized anyway).
  • More up-to-update on "cutting edge" frameworks and languages (AngularJS, nodeJs, play!, typescript, go, etc)
Cons:
  • UI not flexible enough => for instance I could not manage to maximize the "run" output tab. It is really annoying when you need to search in application debug information.
  • No Junit test execution history !
  • More strict on Maven classpath for test (deps of provided scope are ignored). To be honest it is more an issue of not behaving the same as Eclipse (which is default IDE where I work).
At work, i wanted to migrate to Intellij because I found it snappier and having more stable plugins and larger choice (like the ssh client which can be useful). However due to some little differences in behavior with Maven and Junit I did not make the switch because Eclipse is the default IDE used in my company.

Posted by bengi on July 21, 2014 at 05:24 PM MDT #

I have used Eclipse since 2001. When I did only Java programming I was really satisfied with Eclipse. Then, Maven came and it was a lot of pain to use maven projects in Eclipse.

Now, in the meantime focus is also on development of webapps (eg. SPA's with html, javascript, less etc. and frameworks like Angular). Support of these technologies in Eclipse is terrible.

I heard good things about Intellij and tried it out. From my point of view it is snappier, more powerfull and more pleasant to work with.

It supports different languages and also frameworks and libs really good (Java, Scala, Javascript, Less, Nodejs etc.)

So I'm really satisfied...

Posted by 127.0.0.1 on July 22, 2014 at 08:10 AM MDT #

I started using IntelliJ after I spent years with Netbeans (at the time I worked at Sun Microsystems). Visual layout editor has been way better in IntelliJ IDEA.

My favorite IntelliJ feature is Database plugin (it is now also available as a separate IDE called 0xDBE), which allows to work with any SQL DB from within IDE with great convenience. It includes SQLite support on Android, which is a unique feature at the moment, if I did not miss some recent improvement in other tools.

Posted by Philip on July 22, 2014 at 10:27 AM MDT #

One of my favorite aspects of IntelliJ over Eclipse is what I call "code hygiene" - automatic cleanup/fixing of source code (remove trailing spaces, indentation fixes, blank last lines) - all of which is outside of reformatting code.

I have seen a lot of code in our project from Eclipse-based developers that is just plain sloppy in indentation & trailing spaces.

Posted by Brian on July 23, 2014 at 09:44 AM MDT #

  1. First-class refactoring facilities not available in any other IDE I've tried - you can literally code the whole unit of work in a single method with local variables and then use various shortcuts to split it, pull out class members, etc ... this is extremely useful if you don't want your line of thought interrupted by "what shall I name this field?", "does this need to go in a separate method?", "what does this 3rd party method return?" .. the coding becomes a lot more fluid process.
  2. ALT+ENTER must be the 2 most used keys on my keyboard these days. If there is a problem in your code, this combination solves it 99% of the time.
  3. If you take your time to learn the keyboard shortcuts and configure your own, you may find that the mouse on your desk had got a cob web. And with the mouse out of the game, the productivity goes up ten-fold.
  4. IDEA knows a whole lot more about your project than Eclipse does. This means it can show you problems with your code and configuration to which Eclipse is simply oblivious.
  5. A nice "side-effect" of (4) is that it is also very (very) fast at searching for almost anything in your project
  6. Gorgeous integration with all sorts of frameworks and tools - Spring, Hibernate/JPA, Maven(love the `CTRL+SHIFT+ALT+U`) and others

Posted by Pavel Lechev on July 23, 2014 at 05:52 PM MDT #

I finally switched over to IntelliJ when I had to do a project with Grails/Groovy and an intense JavaScript fronted. In neither of the languages and frameworks eclipse was any kind of help. IntelliJ gave you comfort with switching between views and their associated controllers/models, it could give you good support with JavaScript, HTML, CSS and even the Grails GSPs. The biggest disappointment with eclipse was that it even was really bad at groovy support (1 year ago). There is an official Spring plugin for it as well as a preconfigured eclipse version but both struggle with code completion, correct importing and code analysis. IntelliJ outperformed it on all these things pretty easy.

After that I stayed with it and never got back to eclipse.

Posted by Sebastian Basner on July 25, 2014 at 05:17 PM MDT #

Just made a fresh install of Eclipse Luna vs. Intellij.

Intellij: checkout maven project, new run configuration, runs. 10 min max. groovy, freemarker, svn, maven, html, javascript, everything worked.

Eclipse: installed about 5 plugins, one plugin had to be installed from different source, several warnings, restarted IDE three times. "Clean all projects" about 5 times, and then it worked. One hour.

Eclipse Luna is definitely better, but Intellj has really everything included to get startet fast. And keeps the edge throughout the whole development lifecycle.

Intellij is really a brilliant product, but I think it wouldn't be as good without open source competitors like eclipse and netbeans.

Posted by Chris on July 26, 2014 at 09:27 AM MDT #

I'm coming back to Java after a few years in the land of .NET. A number of my .NET programmer friends have commented that what kept them from exploring further into Java was Eclipse itself. I admittedly had some amnesia over the pain points of trying to get Eclipse to do things like remote debugging (correctly and consistently) and working with Maven projects. Matt suggested IntelliJ, and I was actually able to do what I needed to do in 10 minutes (versus the day or so of messing around with Eclipse).

The advantage in productivity that the .NET folks claim (and I have enough anecdotal evidence to think that it is a credible claim) stems mainly from the Visual Studio IDE and the way that it provides enough tools tightly integrated into VS itself. IntelliJ seems to take a page out of the Microsoft handbook when it comes to the importance being able to do most everything you need to do from the IDE. I'm relatively pleased with what I see in IntelliJ, and the price is very reasonable when you compare it to Microsoft's pricing for VS (which in all fairness does include an MSDN subscription).

I'm still knocking around with the community edition of IntelliJ, but if the trial commercial version really value-adds to the development experience, I'll probably end up getting a copy. Thanks for the help, Matt!

Posted by John Dahle on July 27, 2014 at 03:18 PM MDT #

I'm at the third attempt to make friends with Idea - no luck so far.

I do like its maven support, but that's about it. And it's not even that much ahead of Eclipse - you can similarly well build your run configurations out of maven goals and have Eclipse run them.

Other than that, I keep getting annoyed:

  • It's just about three days since Idea started to have lags of a few seconds once a minute or so, every once in a while, even if there's plenty of memory and processor cycles to go around.
  • I find both its context menus and its keyboard shortcuts counter-intuitive.
  • It lacks some basic editing features which annoy the hell out of me - no jumping through camel-case identifiers with Ctrl-Left/Right and the search box not keeping its contents from one search to another, to name the ones that annoyed me most recently.
  • whenever you have to step through a long method with many local vars, you're in for a long wait after each step - until it gets fresh values for all locals from the debugger (in contrast, Eclipse only gets the changed ones, and is much faster).

Also, Idea has by far less (useful) plugins than Eclipse has.

To me, Idea seems to be just a thin wrapper around the various tools developers use, like maven, git or svn, or the debugger. For such a thin wrapper, it does do a good job. But I expect more from an IDE.

For people complaining about instability caused by 3rd party plugins in Eclipse: just pick a distro which packages everything you need. I usually roll with STS. Comparing stock Eclipse with Idea is like comparing Linux from scratch with Windows, and ignoring all the distros.

Posted by Anonymous Coward on July 31, 2014 at 08:12 AM MDT #

When I was doing Java I migrated to Idea for similar reasons. I could never get m2e to work properly, and I got fed up with the JSP editing being predictably crap (partly the fault of the templates we were using). Dealing with a number of plugins was hell. Just updating them all took more than 20 minutes. Also, when I reported a bug (in the community edition!) of Idea it was fixed within a week. I've probably still got bug reports open in Eclipse that have never even been looked at. And that's for the ones where I could figure out which module/plugin to report them against. Honestly I don't know why I stuck so long with Eclipse. I guess the debugger is nicer, but not by much.

Posted by ix on August 02, 2014 at 12:02 PM MDT #

@Anonymus Coward
That CamelCases are ignored during key navigation is only the standard behavior. If you go to Settings=>Editor=>Smart Keys and check the "Use Camel Humps Words" option you can jump through CamelCases as you wanted to.

Posted by Sebastian Basner on August 07, 2014 at 04:42 AM MDT #

Don't forget "compare with clipboard".

Something that I use all the time in IntelliJ and which has no equivalent in Eclipse.

Posted by martin on August 20, 2014 at 01:33 PM MDT #

hi, dear matt. I am chinese guy? thanks for your appfuse, it's helpful for me to cognizing the archetypes. recently we can't access google in china, , it take a long time for opening appfuse login page with google fonts, how to disable google fonts?thanks

Posted by terry on September 05, 2014 at 12:11 PM MDT #

Terry - Bootstrap uses the Google fonts. If you don't want to use them (and your project uses Bootstrap via WebJars), I'd recommend downloading Bootstrap, modifying the CSS accordingly, and changing paths to point to your files instead of the ones from webjars. Hope this helps!

Posted by Matt Raible on September 15, 2014 at 05:40 PM MDT #

There are two primary paths for OSGi development: (1) The Apache way, and (2) the Eclipse way. Both camps pretty much hate the other as far as I can tell. I'm definitely an OSGi fan for tactical backend development and have given each approach to OSGi a fair evaluation hitherto. The PDE flow makes sense to me and, despite its steep upfront learning curve, I'm considerably more effective at building OSGi systems in that manner than drudging through bnd and pom files. In either case, Eclipse is the way to go for OSGi dev: Bndtools for (1) and PDE for (2). IntelliJ OSGi support, while present, can honestly be assessed as dismal: actually, it would be more proper to say it doesn't support industrial OSGi dev. With that said, programming anything else, viz. HTML/CSS/Javascript or any dynamic language, eclipse can be downright ugly--there's no question that a solid argument can be made there for IntelliJ. As for C++, upgrade to a modern language or respectfully retreat back to C; choice of editor in that case is not your real problem.

Posted by Daniel on September 23, 2014 at 02:13 PM MDT #

Post a Comment:
  • HTML Syntax: Allowed