I took a look at Eclipse 3.0 over the weekend, and I have to say that I’m pretty impressed. I have been using IntelliJ IDEA for several years now, and I am a big fan of this IDE. At the same time, I love open source tools and am always happy to try something new. Eclipse has definitely come a long way since its first release - far enough that I have installed it at work today in order to try it on a real project and see how it measures up with IDEA. Note that my IDEA comments are specific to version 3.0.5, as I unfortunately don’t own a license for the newer 4.5 version yet. In fact, the outcome of this Eclipse test drive will influcence how hard I am going to push for new IDEA licenses, although I strongly believe that a few hundred dollars are always money well spent if there is even the slightest productivity gain. But I digress…

Below are some of my initial impressions. I will follow up in a week or two when I’ve had enough of a chance to really test this application.

Eclipse has a very polished look and includes most of the features that I like in IDEA, including very nice code completion and error highlighting, support for a large number of refactorings, Ant and CVS integration, and more. It includes very thorough online help and tutorials, as well as (optionally downloadable) samples. It has simple Wizards for creating new projects, including the ability to analyze an existing file structure and to determine which folders to use for sources, compiled classes, etc. Otherwise, the UI is pleasingly Wizard-free, just like IDEA.

I particularly like Eclipse’s support for perspectives. A perspective consists of a set of views using a certain layout, and each perspective is geared towards a particular task, such as Java development, code browsing, debugging, CVS repository management, etc. Switching from one perspective to another just takes a click and happens immediately.

The area where I have hit a few snags is compilation and CVS support. CVS support uses a built-in CVS client, but this requires a CVS server with a version number greater than 1.1.10. Our CVS server at work is older than that, and because of that certain CVS commands such as diff (a fairly crucial command for me, because I like to use my IDE to visualize differences between particular file revisions or between my local version and the version in CVS) don’t function. IDEA is more flexible, as it allows (or in fact requires) an external CVS tool to be specified. I read somewhere that Eclipse’s CVS support is somewhat flakey. Ultimately, this won’t be a showstopper for me, as we are going to move to Perforce anyway, and there is a plugin that enables support for this configuration management tool (just like for pretty much any SCM tool out there, by the way). For my personal projects, I have been contemplating switching to Subversion, which I have heard good things aboout. But I digress again…

Compilation is also a little bit odd. By default, Eclipse’s automatic compilation feature is enabled, which automatically compiles modified files when they are saved. For some reason, I was not able to get manual compilation working in my project. This was no major deal in this case, as my project has an Ant task anyway that it depends on (since it uses the JiBX XML object mapping toolkit, which relies on bytecode manipulation). The Ant integration is very nice, and very similar to IDEA.

Eclipse includes a very nice JUnit integration, with its own test runner that is tightly integrated into the IDE. It also has a powerful debugger.

One of Eclipse’s main advantages is its openness and its pluggability. There are literally hundreds of plugins out there for everything from language support to code metrics, design tools, source configuration management systems, and much more. Take a look at http://www.eclipse-plugins.info for example. I mostly program in Java, but every once in a while I work on PHP, and I am trying to learn Ruby. Plugins exist for both PHP and Ruby, as well as for pretty much any language, including scripting languages, functional languages, C/C++, you name it. This is a big plus, as it enables me to learn one IDE well, rather than having to use a different, specialized IDE for each language. Of course, the quality and functionalit of the individual plugins varies, and so far I have not had much of a chance to evaluate these. Still, this is a very promising area of the product.

Of course, all this functionality and openness comes at a price. Eclipse is considerably harder to configure than IDEA. And while it includes many of the same simple little convenience features, they are sometimes harder to learn and use than in IDEA because they either don’t have keyboard shortcuts or the keyboard shortcuts are not listed in the menu and have to be looked up in the online help instead. Once the IDE is properly configured, this should not be an issue any more, but it will likely take a little longer to get to this stage.

That’s it for now. Stay tuned for more updates about the Eclipse / IDEA battle. :)