Tapestry Training -- From The Source

Let me help you get your team up to speed in Tapestry ... fast. Visit howardlewisship.com for details on training, mentoring and support!

Thursday, July 02, 2009

Caught between Two IDEs

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.


Martin said...

I've grown fond of the "perspective" paradigm in Eclipse. With two 24" widescreens full of various views, it's great to be able to switch between Java, Debug, Team synchronization, Python, SQL Development and have both screens immediately display everything you're interested in.

I would strongly recommend Mylyn's Jira integration too, you don't have to switch over to a web browser but can have your bug tracker right there in your IDE.

Craig St. Jean said...

My personal opinion is IntelliJ IDEA above all -- on Windows at least, though I don't care for it on my Mac (which is unfortunately stuck on Java 5 forever (its a quad PowerMac G5)).

Next in line I would go with NetBeans. It seems to be the most consistently stable across platforms and is really quite nice to work with.

I use both Eclipse and IBM RSA at work (depending on project), and I personally don't like Eclipse. It usually works just fine, but I find myself a lot less efficient in it (though I am admittedly more used to NetBeans than anything).

Just my 2c

cryptfiend said...

I was kind of disappointed with the last version of Idea. Large source trees were a bit of a nightmare and the IDE would freeze up a bit too frequently.

The new MAIA EAP however is definitely an improvement performance wise. The editor feels snappy, indexing happens in the background and most things just seem to happen more quickly. I'm just disappointed these performance improvements weren't part of Idea 8 especially after they made a big deal of the improvements in the indexing.

The clojure plugin is very early days still. I expect it will improve greatly in future releases.

Howard said...

Another aspect for me is how awkward it is for me to write code in a group when I'm used to IDEA and I have Eclipse in front of me. Using it full time again to develop will help with that. Now if there was just some magic for the Ubuntu vs. Mac OS X key bindings!

Laurent PETIT said...

Hi Howard,

thanks for the kind words on the Eclipse clojure plugin. It's not so frequent to hear good feedback like this, and it surely helps motivate ourselves when working on it on spare time ! :-)



Howard said...


Actually I think your namespace browser idea is really solid! The whole posting was speaking from frustration and didn't go into enough detail about good things like your plugin.

Laurent PETIT said...

Well, I'm pretty proud of the namespace browser, indeed :-)

What I'm willing to do next on it (though I'll have to finish a first version of the formatter / auto indenter before), is something that could allow users to customize the namespace browser by scripting.

If I can publish a sufficiently simple model , then maybe the new version of the namespace browser could be the best script done by one of the users !


paudoauldstock said...

The general performance of IDEA on 64-bit Linux has really improved for me after installing an Intel X25-M SSD. The annoying lockups are almost entirely gone! I can definitely recommend an SSD to anyone struggling with IDE performance.

Craig St. Jean said...

Off topic -- did you know that Opera reports a fraud warning when trying to browse to http://howardlewisship.com/ ?

Howard said...

Yes, something got in there and corrupted a few files of my old project pages. I need to regenerate them and it keeps shifting down the priority stack.

Jaime78 said...

I have used IntelliJ just because of groovy plugin. I have not tasted Clojure, but I like using groovy with Tapestry and the Eclipse plugin for groovy just fails a lot. Some times it compiles Java and Groovy with no problem, some times Java dose not recognize groovy classes nether groovy recognize Java classes.

Now I am back with Eclipse and just abandon groovy. Hope that the groovy plugin get's better over the time.