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:
- The error in the code is not underlined.
- The ant output is not hyperlinked.
- If I want to fix the code there is no convenient highlight-and-fix.
Now let’s compare this to the view of the same thing in Eclipse:
- The error in the code is underlined.
- The ant output is hyperlinked.
- If I want to fix the code there is a convenient highlight-and-fix.
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.