Creator of the Apache Tapestry web application framework and the Apache HiveMind dependency injection container. Howard has been an active member of the Java community since 1997. He specializes in all things Tapestry, including on-site Tapestry training and mentoring, but has lately been spreading out into fun new areas including functional programming (with Clojure), and NodeJS. Howard is a DZone MVB and is not an employee of DZone and has posted 79 posts at DZone. You can read more from them at their website. View Full User Profile

Caught Between Two IDEs

  • submit to reddit

I seem to be caught between two IDEs: Eclipse and IntelliJ. I abandoned Eclipse a couple of years back, partly based on wide spread recommendations from many different people, and partly because Eclipse just stopped working for me (it crashed out).

After I got started with IntelliJ I started to appreciate its merits, despite a generally clunky interface (with lots of modal windows), truly awful documentation. Many things are streamlined and only a ctrl-alt-shift-coke-bottle-touch-your-nose away.

However, over time, using IntelliJ got slower and slower and slower. It also started running the Tapestry test suite horrifically slowly: 40 minutes and up (it should be about five). It would often go away, even when memory wasn't tight. Indexing? Checking Repositories? Computing primes? No way to tell.

Meanwhile, Eclipse has been moving forward, with Eclipse Galileo being a Cocoa (not a Carbon) application. Critical plugins such as M2Eclipse have gotten nice, and the Clojure plugin is mostly better than the IntelliJ one (though both are very early).

For a while I was using IntelliJ when teaching Tapestry (as part of the VMWare image I use when training) ... and I got a lot of resistance. People were much happier with Eclipse on the last couple of go-rounds, and I'm sticking with it.

Overall, I'm feeling that most of what I've grown used to in IntelliJ is present in Eclipse, just handled a bit differently. The Clojure plugins are a wash; IntelliJ has the edge on the Git plugin. I think Subversion inside Eclipse is actually better.

I've even cranked up NetBeans but didn't find anything there compelling enough to switch.

It seems like all my major tools (Firefox, Firebug, Eclipse, IntelliJ) are in the habit of growing too complex, and doing too much stuff in the background that I don't care about. All those intentions in IntelliJ that you have to turn off (for performance reasons), and all those extra plugins for Eclipse that you need to not download in the first place ... they're all getting in my way.

I think a lot of this falls into the general category of accidental complexity ... to address the limitations of the Java programming language, all this extra stuff is coming into play: tools and wizards and plugins and indexes and whatnot. I find it pretty pleasant to work with Clojure instead, where the accidental complexity of Java is managed and isolated and the IDE doesn't feel the need to be overly ambitious. That's the Clojure concept right there ... grow the language to your needs, rather than building up tools. I think that's the Tapestry ethic as well.


Published at DZone with permission of Howard Lewis Ship, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)



Andrzej Grzesik replied on Fri, 2009/07/03 - 4:33am

I'm caught between IntelliJ and NB. I use IntelliJ wherever I can, as I find it better, faster, more intuitive. It also offers more, better working refactorings (eclipse occasionally tried to rename methods inside rt.jar!), which is a bliss considering the legacy I work with. For demos and workshops I have, I tend to use NB, because it's free, offers a download which includes Derby and GlassFish and is integrated with these tools. Just bring a pendrive with one install version and be ready to go.

Gre Sea replied on Fri, 2009/07/03 - 4:46am

Great topic... I took the plunge to develop all of my future apps using Scala so solid Scala support was/is critical. I first used IntelliJ IDEA in 2001 and it was an eye opener. It was the first IDE that did more than just handle the monotonous build and run, syntax highlighting and went into actually being tooled for a developer. But IntelliJ is commercial software and the jobs since haven't had the budget or will to provide me and my team with tools so I defaulted to Eclipse. Eclipse has come a long way, had some bloated stutter steps, and seems to be back on track with Galileo (3.5). Eclipse works great as a Java development, but when I looked at IDEs for Scala support, if fell woefully short (flaky auto-complete if it works at all, 'ghost' red errors on lines with no errors, build issues, etc). NetBeans (just released 6.7) didn't seem much better, although the Scala Lift creator seems to like it best for Scala development (and is not a fan of IntelliJ). IntelliJ's support, although not perfect and still evolving, is an order of magnitude better than the other two (free) IDEs. The auto-complete works (most of the time), the Java development is great and co-exists with my Scala classes, and it's on par (if not better) in most features that I use in Eclipse. So I took the plunge and bought a personal license. It was the best $249 I spent in a long while. Maybe Eclipse/NetBeans will better their Scala support in the future (there seems to be some great people working on those plugins for both IDEs), but for now, I went with IntelliJ (with some overlap in Eclipse due to work environment). Just my two cents...

Matthew McCullough replied on Fri, 2009/07/03 - 10:23am

Howard! You mentioned m2eclipse! I'm so surprised.

I'm really glad you wrote this article as I'm doing the same decision-dance. I love some things about IntelliJ, but using Eclipse makes my students and pair-team-members so much happier. And though I could gain some individual productivity from IntelliJ, with "Agile", "Pairing", and "Coaching" dominating my life these days, it's more about the benefit to the collective than for myself, and that equals Eclipse.

Looking forward to meeting you in person when we both are presenting in Seattle...

-Matthew McCullough

John Broglio replied on Mon, 2009/07/06 - 1:46pm

I have tried switching to Eclipse, but run into two or three problems.  Things that keep me from switching to Eclipse: 

  Build process.    Eclipse seems to need to build a project itself (not through ant) in order for error checking, etc., to function properly.  That means dual maintenance for builds.  IDEA has been happy to use ant.

  Key bindings.  When I first tried to switch to Eclipse, every module/plugin/view had its own key-binding mechanism, so my emacs-style key bindings, which were PAINful to customize, went away when I switched from Java to xml view. There's got to be an easier way.

  Large projects.  IDEA uses parsing/indexing for error-checking and suggestions.  Eclipse appears to depend on the compiler.  In a big project on an average machine, every minor mod takes you through the whole build process before you get any info.  Alternative is to turn off auto-build and try to remember to turn it back on when you want to look for errors or get info on your new code.  Both ways seem onerous.

  Project structure. I'm vague on this at by now, but Eclipse seems to be pretty religious about where source code and libraries can lie in relation to the workspace.  Our Eclipse guys do a checkout and then copy directories into their workspace to get around this.

  Minor things.  Changing the Java language level was a black art last time I looked.  Too many dialogs do similar things in remotely different places.  Does "encapsulate variable" still coexist with "generate get/set methods" and do they still do the same thing differently (especially if you have an existing get or set method)?

  I'm always looking for solutions to these hassles, so I could switch to Eclipse.  The bright Eclipse users in my office haven't found any.  (Six months ago, I stopped accepting the excuse "I can't run/test that with Eclipse".)  Every so often I try out a new version of Eclipse to see where it's going.  With the user-UNfriendly plugin finder and the other issues, it is usually worth a day just to find out that not much has changed. So I still own my own version of IDEA which I upgrade every couple of years.  Someday...


Walter Bogaardt replied on Mon, 2009/07/06 - 5:26pm

Know the pain, but sometimes $ comes into play, and you have to go with the free version. Depending on your mode of development one IDE rules over the other. Netbeans is an example where it still hangs on and is good for mobile development. IntelliJ not so much. Eclipse has gotten better and more web enterprise capable. I don't know if I like the continous building right off the bat, but you can turn it off.

 Still my preference for refactorings is intellij. Never steered me wrong. Alas though I have to go settle with Eclipse until I find funds to get intellij.

Jakub Exner replied on Tue, 2009/07/07 - 9:54am

From my limited experience, every IDE has its own "black magic" you must handle if you want to be really effective in it. I would like to highlight what I think is pleasant: Eclipse has easy to use Tomcat integration and easy to use Java code completion - no need to learn many complicated keyboard shortcuts like in IntelliJ IDEA. On the other hand, IDEA seems superior for development with HTML + JavaScript with its code navigation and completion.

Gordon Milne replied on Wed, 2009/07/08 - 5:21pm

Yes, IDEA has gotten a lot slower since v7. I am currently running V9M1 on my PC (Pentium 4, 2.4GHz). It seems a bit more performant but it still has these little petit mal where is seems to drift off into some kind of day dream.

I long ago disabled sync-on-frame-activation and that worked for a while but every major release seems to get slower and slower.

Having said that, I do like the way my fingers have remembered the keystrokes. I was an Eclipse from 2003 until the IDEA switch sometime in 2005. I found IDEA to be a lot more understandable and easier to work with. Eclipse was, for me, a bit suspect, especially the way it went down the SWT route. I still consider IDEA to be better.

I try Netbeans out a few times a year. I think its the easy-to-access refactorings that keeps me with IDEA.

I just wish it was faster.

I know the answer to my performance problem ... get a newer PC. It's in the budget, but the budget got frozen. What I need is one of those quad core boxes the mechanical engineers have. Whilst the software developers have two monitors (1680x1050 + 1280x1024) we have definitely lagged behind in the horse power stakes.

And I need those new boxes for my team too, no matter what they say about them being good enough.

John Broglio replied on Thu, 2009/07/09 - 2:39pm in response to: Walter Bogaardt

If you are buying your own copy of IDEA, try contacting them about the price for a personal purchase.  In the past it has been significantly less that the price for a corporate purchase.  I find I have to make email contact with someone there every time I upgrade to secure the "personal copy" price.  Minor hassle and worth the effort. --John

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.