For the last few years, I’ve been saying that IntelliJ is the best Java IDE on the market, but that Eclipse is pretty close. I’ve also been using Eclipse that whole time (having used IntelliJ before that), because my then-employer didn’t like to shell out money if they didn’t have to.
Well, I’m at a different company, and everyone here uses IntelliJ (bought-and-paid -for, even!). And I’m finding that IntelliJ is as good as I remember, but there are a lot of things that are bugging me with it. Enough that I wonder if it’s worth using.
Here’s my list:
- Adding support for custom Ant tasks in the Ant editor is really really lame. You have to copy the jars into the IntelliJ install directory! WTF? Along with all the dependant jars, but there’s no warnings to indicate what those may be.
- I really miss the Eclipse “Problem” view. Being able to see all the syntax errors in my application greatly assists manual refactorings. It also flows better with my TDD-style, where you deliberately introduce compile errors (while writing by intention), then come back later and correct.
- Hitting Shift-Ctrl-F10 to run the current test method is nice, but having to key around to get outside of the method to run the entire class is shitty.
- Why can’t I re-run the last thing I ran with a single key stroke? Instead, I have to mouse over to the run window and push the button there.
- I miss the “Compile on Save” option.
- Compilation is slow.
- I really liked the CVS support in Eclipse, particularly the changeset view when synchronising. By comparison, the IntelliJ support is really primitive.
- IntelliJ modules don’t seem as powerful as Eclipse projects for organising related code; mind you, that may just be a feature of how we use it here.
- Why can’t the bloody docked tabs keep their size consistent? I’m sick of seeing my editor window resize every time one of the tabs pop up.
- I miss my “favourite” test & debug options; Eclipse lets you place certain run/debug configurations as fixed favourites in the menus, which makes them easy to invoke. Nothing like that for IntelliJ.
- When I create a new class, I need to be at the right place in the filesystem to do it. This means that when I create a new test class, for example, I have to go to the right package in the test source tree. By contrast, Eclipse lets me change the source tree and the package name in the dialog (very smoothly at that)
- I can’t drag-and-drop methods around in the Structure window (IntelliJ’s equivalent of Eclipse’s Outline view) to re-organise my source code.
These are the biggest issues. I’ve got lots of minor gripes as well, but they simply reflect the fact that I’ve been using Eclipse solidly for the last two years and know it very well; I don’t have that level of familiarity with IntelliJ yet. The above points, however, seem to me to be fundamental limitations of the tool (though if I’m wrong, please correct me!)