Java News from Tuesday, August 22, 2006

I've been playing with IntelliJ IDEA 5.1 for the last day or so. It seems OK, less buggy than NetBeans and no stranger or buggier than Eclipse. I wouldn't exactly call it a model of good user interface design though. There are lots of little glitches, such as menu bars that disappear when certain windows are open, omitted menu shortcut keys, menu items that bring up dialogs but don't end in ..., a non-native busy cursor, Mac OS 9 file dialogs, application exiting when I close the last window, outdated screen shots in the Help files, a Windows menu that doesn't keep a list of open windows, and for some unexplained reason I have to save a color scheme before changing the default font.

I'm having a devil of a time figuring out basic things like how to stop IDEA from folding my comments, and how to set up the classpath. All of these are far from obvious. The small buttons with weird icons don't help here. I still haven't been able to figure out how to indicate that one project depends on another (e.g. that Jaxen depends on XOM and vice versa). I suspect Eclipse is equally or perhaps more confusing to a new user, but at least I'm used to its idiosyncrasies.

IntelliJ IDEA is famous for its refactorings, but so far I don't see why. To date it's made three suggestions, each of which was flat-out wrong. The latest is a claim that an import is unnecessary when the class it imports is used in the first line of the main() method.

IntelliJ hung on me once. It was a weak hang—the busy cursor spun indefinitely while opening a package, but I could still do other things—but it was still a hang. I had to quit and restart the program.

If I were evaluating IDEs on a level playing field, I might pick IDEA, but I'm not. Eclipse has two big advantages over IDEA:

  1. Eclipse is open source, and thus has a much larger active community fixing its problems and adding to its functionality.
  2. I'm already used to Eclipse's weirdnesses and UI glitches.

However, the bottom line is that the state of the art in IDEs for Java isn't nearly good enough. I wish someone would invest in some real human factors research on IDE design. What we have now is a confusing mishmash of features baked together without much thought for what the resulting product will look or feel like.

I could swear things didn't used to be this bad. Years ago when I was doing C and C++ development with products like Think C and Borland C++ Builder, the IDEs actually made sense. Maybe my sense of aesthetics has gotten more refined over the years, or maybe my projects are larger and more complex, or maybe Java is just harder to design for than a compiled language. (The classpath is a big part of that.) Whatever the reason(s), IDEs are just too klunky.

Polarion Software has released Subversive 1.0.2, a pure Java, open source Eclipse plug-in that provides Subversion integration. 1.0.2 adds a decoration for read-only files that need locks, a subversion import wizard, and the ability to checkout subdirectories.