Ant, IntelliJ, and Eclipse

And it’s way in the future and here we are again arguing about which IDE is better: IntelliJ or Eclipse.  It never goes away.  And NetBeans is still the choice of newbs, and gets cast aside for enterprise work.  Personally I never look at it so it’s not in this discussion.  We are talking PRACTICE.

I use IntelliJ quite a bit.  I have to admit I do like the UX and the search is fabtastic.  Many would say that IntelliJ takes over those mundane low level things so you can code.  However I use IntelliJ more like a fancy task editor with terminal operations on the side.

I also use Eclipse.  I have to admit I like the way Eclipse integrates with very well with command line tools, servers, testing and it’s handling of class navigation.  In fact for many of the Java-specific tasks I would say I definitely prefer Eclipse.  And what is wrong with low-level control over code?  Nothing for a more guts-n-girder coder such as myself.

There is a social aspect I do not like about IntelliJ.  It crosses into an irrational  “Macs are the best” type of mentality.  This type of view skews the fact that there isn’t really a great tool and I like teams that have people doing any kind of tool so your project does not get strapped to the IDE.

Eclipse, with all it’s plugins, and workspace mechanic, test integrations — it can become a taskmaster making your life too much of a compliance hell.  I’ve seen whole projects strapped to Eclipse; in fact I think it lends itself more than IntelliJ to this due to *choices* — lots of choices.  Its roots with WebSphere are a testimony to this project dependency-ism.  I find it a little easier to exercise restraint in IntelliJ than Eclipse — probably due to the mundane management differences.

Recently working on some ant on a project I was new to, I was switching back and forth IDEs to decide what I’d like.  The project was ANT build based and I had to merge two huge branches.  A nasty merge.  So I used SourceTree/command line git as I usually do.

I resolved my conflicts in IntelliJ.  It was better.

I did my builds and ant management from Eclipse.  It was better.

Then after my first round of roughly 70 files merged I came back to do some optimization.  During that I decided to optimize the imports, and for kicks used IntelliJ (usually I use Eclipse for code quality).

IntelliJ messed up the imports.  It decided to take some of the necessary dependencies out . . . and broke my build. I went back to Eclipse to resolve these issues and decided to write this blog piece up; and here you are, one of the subtle issues between the IDEs; in this case Eclipse gets the nod.  (Also for import optimization — Eclipse didn’t mess it up.)

For this file, IntelliJ removed the IOException import directive.  I did an ant build, and you’ll notice a few things:

  1. The error in the code is not underlined.
  2. The ant output is not hyperlinked.
  3. If I want to fix the code there is no convenient highlight-and-fix.

View of erring class in IntelliJ with ant build output.

Now let’s compare this to the view of the same thing in Eclipse:

  1. The error in the code is underlined.
  2. The ant output is hyperlinked.
  3. If I want to fix the code there is a convenient highlight-and-fix.

View of erring class in Eclipse with ant build output.


Convenient highlight-and-fix in Eclipse.

So that really sums it up for me in this use case: Eclipse has better class navigation, class resolution and class tooling when doing these command line and refactor type tasks.  I find it a bit disturbing that IntelliJ removed this import during its optimization operation; but I keep learning not to trust my tools completely.

I will continue to use both IDEs of course.  Each has their merit.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>