30 November 2005

IntelliJ and Eclipse

Well I thought I'd never stoop so low as to enter into this flame war on my blog, but Patrick's Eclipse Live Templates post is worth keeping, so I may as well document my feelings also...

As everyone knows, Eclipse is the best IDE out there, it's the only choice right? Very wrong. Sure, Eclipse has the market share, has more plugins, and widepsread industry support, but is it really a better IDE? My take on it is no. Yes I can use it, but it feels like the difference between riding a hardtail vs a dually. Sure they both get you from A to B, but one is much nicer to ride and doesn't hurt your ass as much. Another analogy I like to quote is that Eclipse feels like using Word, it tries hard, but in the end you end up fighting the editor just to get work done.

I've been using Eclipse a lot lately (by a lot I mean a couple of days solid) as we're merging between branches and IntelliJ does not support this (as far as I can tell anyway). I've also had a lot of people ask me for my opinion on IntelliJ as we've got some spare licences floating around and most of the guys are using Eclipse.

Eclipse does have some good things going for it.

  • Better CVS support. Eclipse seems to have re-thought the entire revision control experience, making it easy to work with. This does have it's downsides, like Eclipse only developers who don't understand CVS or Subversion fundamentals (and cannot operate outside of Eclipse) or with CVS gurus who cannot understand Eclipse's naming of operations and its workflow.
  • Better use of screen real estate. The tree in the Package Explorer is a good example of this. Eclipse seems to use much less horizontal and vertical space in the tree view, allowing more classes to fit in a given screen size.
  • Eclipse looks nicer (by default) to me, perhaps owing to its SWT heritage vs IntelliJ's Swing. Its window management is a bit more advanced also.
  • Eclipse's debugger is apparently better, I say apparently as I haven't noticed it myself. It supports threaded apps in a more logical way, by sticking to a single thread and not jumping threads when breakpoints are hit in these threads.

So what are the bad things?

  • Eclipse requires you to save all the time. This gets very annoying when you're used to IntelliJ. Say for example you make a change to a test and you want to run it, why wouldn't I want to save the test file. This stuff should just happen without the need to prompt the user. File management should be taken care of. IntelliJ does a good job of this and allows it to be configurable (the save timing that is), to the point where you forget about it altogether. If you want an older version, it's in CVS (cause you're doing tight spinning when writing new code) or in the local history.
  • When comparing files (select two projects, right click, Compare With -> Each Other), copying all changes from one file to another (called "Copy All Non-Conflicting Changes From Right to Left"), Eclipse does not warn you that you need to save the file (I'd been using a different form of merging/diff - the Compare With -> Another Branch or Version... - where this change is automatically saved). So I'd been happily chugging along all morning, when Eclipse crashed, losing a few hours of work. On the plus side, when you do hit save, it quickly shows you the "file has changed" symbols, saves the file, then removes them. Very helpful.
  • Eclipse has serious usability issues in graphical diff (Java Source Compare) screen. 1) When merging differences, Eclipse continues to highlight changes, even though they've been applied. Whereas IntelliJ will remove the coloured background and border from changes that you've already applied. This provides an easy visual clue that you've complete a merge. Also, the little buttons for merging are too small, have icons that look the same (probably a result of them being too small, you can see the differences if you look closely) and are in the wrong position. IntelliJ gets this right, by placing the the icons (a cross for delete or directional arrow for merge) at the point of difference, allowing you to clearly see the affect clicking will have.
  • Like Word, Eclipse wants to own your files and wants you to make all your changes through it (I assume so it can keep its caches up to date). So if I change a file on the file system (say to back out a change because Eclipse won't undo), Eclipse continuously reports that the file is out of sync with the filesystem. Why on earth it doesn't just sync it and be done with it is beyond me. Now I have to a) remember where I am in my merging, then b) get out of the view, c) re-sync the project and d) re-compare the projects and e) go back to where I was. Again, a little thing that really gets in the way of productivity.
  • Eclipse's two ways of comparing do not give the same result. CVS differences (select a project, right click -> Compare With -> Another Branch or Version...) show less files than a straight file system difference (select two projects - representing different branches - right click, Compare With -> Each Other).

By now I think everyone knows my view on the matter, but my short summary is that while Eclipse is fully featured, everything is done in such a half-arsed way that I really don't know how people can use it on a day-to-day basis. I think I'd prefer to go back to using a straight text editor than be forced to work around its inadequacies. And why is IntelliJ better? It just feels right. That's the best way I can put it. Like any tool it takes a while to get used to it, its keyboard shortcuts, etc., but once you learn these you'll never willingly go back. It seems to know what you want to do and will suggest things to improve the way you work all the time. Everyday I find a new thing to like about it. Its smarts are not the Word breed of smarts however. You always have control and it does not bend you into its way of working. It's a tool that works with you rather than against you.

24 November 2005

Thursday Links, Part II

17 November 2005

Thursday Links

Some quick links for Thursday

11 November 2005

Another reason not to install Windows

As if the world needed more reasons... Here is a blog entry about Sony's latest DRM tactics, which has been followed up by the BBC and USA Today. There are followup posts here and here.

10 November 2005

Free Smalltalk books

In case anyone (like me) wants to get an idea of what smalltalk is about: Stef's Free Online Smalltalk Books