As a developer of the Wicket project, I am/was in the proud posession of an open source license for IntelliJ IDEA.
This license is about to expire and I must say I haven't used it as
much as I would like to. This is an account of the (limited) time I
have used IDEA.

(Not) using IDEA

The main reason for not using it is unfamiliarity with the product. I am an astute Eclipse
user (but not a zealot). I have become accustomed to some of the things
Eclipse does remarkably well. IDEA does those thing also, and probably
just as good or even better. The biggest hurdle is to find those
options and capabilities. That makes transition to a new IDE hard,
tough. Furthermore, when you aren't allowed to use the IDE for
commercial purposes (the open source license only grants Wicket related
development), it is not possible to use the IDE in your daytime job. So
I will be switching between the Eclipse world and the IDEA world.

One could say that I'm being anal about the licensing, but I have
another, more pressing reason to keep working with Eclipse in my
daytime job: the team. I'm part of a development team, and I have to
work with them and deliver code under considerable time pressure.
Learning the ropes of a new IDE is not a productivity booster. We are
mainly building web applications and Eclipse works pretty well,
especially with Wicket. When I were to use IDEA I'd be sacrificing some
productivity (for a couple of days), but more importantly, updated
dependencies in our project won't be available in my project files, as
everyone else is working with Eclipse.

Now that I got that of my chest, I must say that the limited work I have done with IDEA does make it feel like a very good IDE.

What do I like about IDEA?

The formatting, the controls, the whole look'n'feel on Mac OSX. It just
feels much better than Eclipse on OS X. It may not be native looking,
but it does get the job done. It doesn't feel as sluggish as Eclipse
(3.1.2, dual power G5, 2Gb ram).
I like the default font/coloring of the editors. I really
like the fact that you have a decent XML/HTML editor integrated into
the workbench. I also like the bundling of resouce bundles into one
folder, which take less space this way.

The debugger is pretty decent, though I haven't done serious enough
development to see it in full action. The same goes for the refactoring
support: still haven't used it enough to judge it on merit or compare
it to the functionality provided by Eclipse.

What I don't like about IDEA

I have done some basic development in IDEA, and some things don't come
naturally. For instance I'm used to pressing CTRL-SPACE to do all sorts
of things: importing classes, overriding methods, implementing methods,
code completion, template selection and more. Take for instance the
following code snippet

public class Index extends WebPage {
public Index() {
add(new Label

When I press CTRL-space in Eclipse, I get a list of classes that can be imported: java.awt.Label, wicket.markup.html.basic.Label.
In IDEA I get nothing when I press CTRL-space. In IDEA I either get the
message to press alt-enter, or I have to use smart completion:
CTRL-SHIFT-space. Granted, IDEA is somewhat smarter in presenting the
choices (it prefers the Wicket label class over the AWT one), but I
have 3 keys that do the same. And why don't I want to have 'smart'
completion as the default?

Depending on which short cut I choose, I get different code: smart complete puts parentheses behind the label's constructor and puts the cursor behind it. The other way (alt-enter) puts no parentheses but just completes the class name. My
constructor takes at least 1 parameter, so I have to move the caret
back. And again you have a different key combo to see which parameters
are available with the method: command-p (OS-X binding). In eclipse you
typically just press CTRL-space.

In summary, IDEA has moved some intelligence to the user of their IDE:
you have to provide the context to IDEA on what you want to do: need
parameter completion: press the special parameter completion magic
keys. Need class name completion, use the intentions menu
(command-enter), or use the smart completion (CTRL-SHIFT-space). In
Eclipse this is automatically derived from the context: if you are
inside a parameter construction, and press CTRL space, Eclipse deducts
that you want to see the parameters.

Another thing I don't like is the fact you have to 'rebuild' when you
change your classes or resources. Eclipse does this 'on-the-fly', which
makes development very fast. This comes mostly into play when you are doing Wicket development, and you change a markup file. IDEA only copies the changes when requested to do so. Eclipse automatically copies the changes where they can be picked up by Wicket.


Although I haven't used IntelliJ IDEA nearly to its full potential,
I feel it is a decent IDE and I can imagine that many benefit from
using it. The markup editor is pretty awesome, and I like the way IDEA
works on OS X (it just works, no problems, contrary to SWT/Eclipse). I
don't like the numerous keybindings that could easily be bound to one
key if the IDE would use the context a little more, and I really miss
the save and continue approach used by Eclipse.

To bad our Open Source license will expire in a couple of days (I
guess 2), as I would like to get acquinted a little better, to see if
there is an idea to the different key combinations (no pun intended).

I encourage anyone to try out IDEA as it is a very good IDE. Especially when you are working on OS X, IDEA might be your cup of tea: the Swing UI feels much better than the SWT UI used by Eclipse (3.1.2).