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!

Tuesday, December 28, 2010

Is it time to switch back to IntelliJ?

I've been trying to stick with Eclipse now for a while. I switched from IntelliJ 8 to Eclipse because IntelliJ stopped working for Tapestry (I still don't know why) and because my fingers were getting tied in knots switching between IntelliJ and Eclipse. I have to switch back and forth because my Tapestry training uses Eclipse and I got a lot of negative feedback the times I tried to get people to use IntelliJ as part of the training.

In any case, I've been gritting my teeth against the travesty that is Eclipse; the inconsistent behaviors, the needless complexity, the lack of sense in much of the UI. I often wonder what IDE the Eclipse developers use, because it couldn't possibly be Eclipse itself, or they would have fixed some of the more brain-damaged stuff years ago.

One thing that is currently killing me is that Eclipse has no concept that some source folders contain production code and some contain test code. Because of that, when I collect coverage, EMMA instruments the test code as well as the production code. That not only throws off coverage figures, but breaks some of my tests (advanced ones about bytecode manipulation, that are sensitive to when EMMA adds new fields or methods to existing classes).

Fortunately, EMMA has an option to restrict its instrumentation (though it a global preference, and not configurable for individual projects) ... but shouldn't Eclipse understand this distinction natively? IntelliJ does, and it helps prevent a lot of problems, not just with coding, but with testing as well.

I keep hoping that there's a better, faster, simpler solution out there ... something that is elegant and precise. Eclipse is dumb as a sackful of hammers, and IntelliJ is almost fractal in its complexity, and ugly to boot.

I haven't found my perfect IDE yet. Maybe it's NetBeans?

12 comments:

Ben Dotte said...

The GIT support alone is worth the switch. Come back to IntelliJ!

Anonymous said...

Intellij IDEA is still a delight to work in, but Tapestry and IntelliJ is still a mixed bag. For all my desire to come back to T5 for a current project, I keep running into a wall when trying to combine IDEA (9 or 10), Tapestry, and Jetty. The Jetty server integration changed in IDEA 9 such that automatic reloading fails, and I still haven't been able to find a way to make it work. (I have the source of the Jetty integration plugin -- its on Github -- but not the time to dissect it and find the problem.)

It's funny -- when I mention this to other people, they say "there's a page on the wiki that explains how to do it." They don't notice that I wrote the page in the first place!

...R

Unknown said...

I switched to IDEA this month and am really happy about it. The combination T5, Jetty & Live Class Reloading just works. Just press cmd+F10.

See here: http://blogs.jetbrains.com/idea/2009/10/update-a-running-javaee-application/

I like very much the structures projects. The flat workspace hierarchy in Eclipse just sucks, especially when using Maven. BTW Maven integration just works. Also SVN and Git.


Unfortunately there are a couple of small bugs, but it is ok.

kovica said...

I've been using all three (NetBeans, Eclipse and IntelliJ) with one of our more complex projects.
The best IDE to work with is NetBeans. I don't like Eclipse beause of much the same reasons as stated in the article, plus it has ugly look under Linux. I don't like InteeliJ because it can go off for about an hour calculating "project dependencies", what ever that means. So for now, I'm sticking with NetBeans.

Tomcat said...

Hypothetically, I'm going to posit that whether or not you switch back to IntelliJ, the value you have received from Eclipse along the way is greater than the value that would be contributed to Eclipse if you fix/enhance it to your whims, and thus posit "what are you waiting for"? Think of it this way, lots of us in your community are stuck in corporate settings without even the choice of IntelliJ. The concept of open source is that you have *3* choices: use Eclipse as-is, use IntelliJ as-is, or take ownership of Eclipse and fix the nits that itch you.

Unknown said...

@Tomcat

I'm having trouble parsing your intent there; it come perilously close to "it's open source, if you don't like it, fix it" which I find to be a bit of a myth.

Not everyone has the same skill sets, and certainly time is not infinite. It could take me weeks to learn the Eclipse APIs well enough to write something effective, then longer to wait while patches are accepted and eventually end up in new releases. And that's time when I'm not doing the work I should be doing: Tapestry.

I try to avoid that mentality with Tapestry; if something is broken, we admit to it, and try to fix it. More importantly, we use our own dog food (i.e., develop Tapestry apps for customers) and work to find rough edges and fix them. I know I do.

eirikma said...

If you bother to try all of them, you'll probably find out that JDevelper seems like the best, think you're about to make an embarrassing mistake and stick to eclipse for a while longer. I don't dare to bet on it either. The new IntelliJ 10 seems like a serious offer, though, especially the paid for version. Not only is it much faster, things are actually working again.

Alexander Ashitkin said...

idea and only idea. if you need a feature for tapestry you can contribute to idea as well.

l0st3d said...

Time to start learning emacs?

Unknown said...

@Howard,

It's definitely a myth that Eclipse users can fix bugs in Eclipse. The internals of Eclipse 3 are such a mess that reformers have started the e4 project.

I had high hopes that e4 would fix the Eclipse user experience and also make Eclipse 4 a widely adopted platform for customization. For reasons that I haven't heard explained the Eclipse team has decided to continue going forward with the hairball Eclipse 3 platform instead of migrating to the e4 platform and giving Eclipse a whole new start. e4 became just an incubator instead of a new lease on life.

I move back and forth between Eclipse Helios and Netbeans as my projects allow it, but neither one has won me over.

Everyone knows that Java build systems are a travesty. Java IDEs are considerably better, but entropy is overtaking what should be continual improvements in Java IDEs.

Architecture is what allows you to keep ahead of entropy on large software projects. Entropy will overcome poor architecture, as Eclipse 3 shows.

Toi said...

I agree with Alexander: "if you need a feature for tapestry you can contribute to idea as well". Howard, you're the person who understands Tapestry most, so you should write a Tapestry plugin for Idea. Or you can make Tapestry as popular as Spring MVC, JSF, Struts, GWT ... then JetBrains will make that plugin for you.

Hugo said...

@Toi,
IntelliJ actually already has a Tapestry plugin out-of-the-box. Unfortunately Jetbrains doesn't seem to give much attention to it and as such it has pretty much been made useless.