Eclipse is still my number one.

(home)

I’ve spent some time with different IDE’s in recent days and while the two Eclipse alternatives I tried were really, really good, they lacked one feature which for me is a deal breaker (I’ll get to that shortly). The two I tried were Netbeans and IntelliJ IDEA:

Netbeans 4.1

I began my IDE days as a Netbeans man (although they called it Forte for Java way back then :P) but due to being exposed to the infinite love of Eclipse those days sadly came to an end about two and a half years ago. At that time Eclipse was far superior in terms of useability, responsiveness, features and aesthetics. Thus, it was with some scepticism I picked up the latest version for a trial run on the mac. I must say I was quite surprised by how good it has become. Honestly, it has come forward leaps and bounds in terms of performance (particularly), useability and aesthetics. To be fair, with regard to features, it has a number of things I will never use and is lacking some I use a lot. It still have some way to go with refactoring and the version control integration was . . . ugly at best. However, overall it has really become a stunning piece of software and if I began work in an “all-netbeans” shop I could make day-in, day-out use of it without virtually any complaints.

IntelliJ IDEA 4.5

This is the first time I have really given IDEA a good working over. There is a seemingly endless amount of goodwill floating around for this product and it is not difficult to see why. On OS X it is visually stunning, easy to use, feature packed and a fine performer. It is such a sleek package I had to stop myself from pre-emptively purchasing a license. I’m more than happy to pay for good quality software, and this is a prime example of software worth its asking price. However, as I went on, just as with Netbeans, it suffered from a couple of little shortcomings I didn’t like. One of the IDEA-only examples was the “new class” template. When I create a new class, the template I use inserts a big chunk of license information into the top of the file. This is trivial and supported by virtually every IDE, however, IntelliJ was missing something I want: the ability to simply insert the name of the project in a specific location. While it is able to insert the author, package name, date and time at creation, one thing my license structure needs is the name of the project (”this file is a part of fedws2″ for example). Sadly this isn’t part of their predefined variables that makes things annoying.

Version control integration seemed much more intuitive than Netbeans, but given I use subversion and the next version (which is a free upgrade for people who buy 4.5) it was difficult to find the motivation to find a subversion plugin to test out.

A Tale of Two Features

There are two main features that Eclipse seems to do really well that other IDE’s either do poorly or not at all. The first is subversion integration. This isn’t a major, major issue for me as I’m quite happy to do most subversion tasks from the command line. However, I have become quite used to being able to see at a glance which files have been locally modified and the version of each file. Subclipse rocks hardcore and has spoilt me in many, many ways.

My main gripe however is the lack of information about errors which both Netbeans and IDEA gives. After using Eclipse, I have a new standard on this point. I want the “problems” tab which shows me all the errors in my project as I work. I should not have compile error. Period. For the last 2 years I have never had a proper compile error (forgetting to put libraries into my ant build doesn’t count) that is extremely impressive and wholly attributable to Eclipse. I don’t get compile errors because Eclipse tells me about them before I have a chance to get to the compile stage. As far as I am concerned, this is REQUIRED functionality and is not something I am prepared to live without.

While both Netbeans and IDEA will tell you when you file has a problem, they both fail my compile-test which goes like this:

The Test: Open a file and change a method name (add a z to the end or something). This method must be used by another source file where changing the name would cause the compile to complain about not being able to find a symbol. If the IDE gives you no indication that there is now something wrong with the project, it fails the test.

Yes, I am aware that I probably shouldn’t just change the name of a method and to successfully catch all problems I should use the IDE’s refactoring tools, but that’s not the point. The type of error in this cause isn’t relevant, what is relevant is that I was able to create an error and not know about it until compile time. Thus far, Eclipse is the only IDE I have encountered which has passed the test.

The reason for this post probably deserves an explanation. There is a bug in the latest Eclipse under Mac OS X where by performance slowly degrades over time and is something only a restart of the program will fix. It seems specifically related to the combination of Eclipse and OS X Tiger, however it manifests itself in an extremely annoying way for me. The PowerMac is more than powerful enough that I don’t actually notice much (if any) of a performance slow down, however, I do notice that after a while the computer is working much harder than it was previously. How?

The fans on the G5 always spin, only at very low (and inaudible) speeds. However, when the chips start pulling a reasonable amount of power the fans spin up to an annoyingly loud level. For tasks which require extended periods of activity (such as importing a CD into iTunes) the fans will spin up right away, but after about 30 seconds they will spin down (even though the machine is still doing the same amount of work). So, it will spin the fans up early based on a spike in power consumption as a precaution and when the amount of power being pulled levels out (all be it at a much higher level as it is working harder), the fans spin down until there is a temperature problem.

This is fine for most situations, however, in cases where the machine is doing short bursts of intense work (such as in Eclipse when all the background checking and work is running when I start typing) they will also spin up. Given that these periods are short, the threshold is reached, the fans spin up, the activity stops, the fans spin down. For something like typing (which isn’t continual) this results in the fans spinning up and down and up and down and up and down and so forth. Very annoying. It doesn’t happen in any other program, only Eclipse. It doesn’t happen when I first fire up Eclipse (or when I restart it), only after I’ve been using it for a while. Why? Because of the bug the machine now has to work harder and thus is more often pushing past the threshold where the fans will spin up.

As annoying as it is however, I can live with the occasional restart. However, I can’t live without an IDE which doesn’t pass my only deal-breaking test and thus far, Netbeans and IDEA just don’t cut it on that particular point.

Taking things one step further, I have recently found the ideal way to make use of a resolution of 1920×1200. Widescreen monitors are fantastic, however, with the project browser window of eclipse and the labs code formatting guideline that restricts lines of code to a maximum 100 characters in width, I had a lot of wasted space in my window. That was until today, when I dropped the font one point and realised hardcore coding heaven. The screenshot (for the full picture just click on the image) below illustrates my current working environment.


15 Responses to “Eclipse is still my number one.”

  1. Pete Says:

    hey … ya learn somthing every day … good stuff.

  2. CPT Says:

    I’m still in shock over how loud the fans really are. I know they bother you but I *love* a loud PC, and those fans have to be the gruntiest fans I have ever heard.

  3. Jonathan Feinberg Says:

    I wonder whether the thrashing might be alleviated by allocating a larger heap to Eclipse (via the -Xms and -Xmx vm arguments).

  4. Keith Lea Says:

    I don’t understand. What’s the difference between seeing compilation errors while editing, and when clicking Compile? I use IDEA, and I probably see compiler errors once per day at most, and they’re almost always errors that I only would’ve fixed right before building and running anyway, so it’s not like I missed errors that I should have caught sooner. Is it different for you?

  5. eu Says:

    Keith, the thing is that you actually have no need to use “compile” button in Eclipse. It is really addictive and very verbose, because error markes propagated everywhere - packages view, class hierarchy, search and even on CVS/SVN views. More over with 3rd party plugins you can see “compilation” errors even on resources (e.g. Spring context xml, AspectWerkz xml, JavaDoc-based annotations in backport175).

  6. tim Says:

    Jon: That’s a good idea, I’ll give it a go and see what happens

    Keith: I have to agree with eu, it’s less about having compile errors and more about knowing exactly how any changes or additions you are making effect the rest of the project. It’s one of those things which starts out small, but as time goes on it just becomes such a part of the way you think when using the IDE that when it is gone, you kind of feel a bit lost. IDEA however was lovely, but for that one feature that I put a high value on. If IDEA had that functionality I would have switched.

  7. Rob Harwood Says:

    Unfortunately, to get this feature in Eclipse, you are forced to trade off even more valuable features, such as the ability to refactor code with trivial syntax errors (try removing a semicolon from a line in one method, then try to rename another method: you can’t), as well as the ability to see ALL the errors in your code (try the same semicolon removal; Eclipse fails to show any remaining errors in the rest of the method). This is something that you really come to appreciate when you are in a coding frenzy in IDEA. It continues to be intelligent even though you’ve got errors in your code. Eclipse is more like a traditional compiler, it finds the first error and then throws its hands up in the air and says, “I can’t help you anymore until you fix that trivial bug.”

    With IDEA, you can ‘workaround it’ by pressing one button. With Eclipse, there is no workaround.

  8. Roman Strobl Says:

    The versioning support of NetBeans is being rewritten, see this. Support of other versioning systems than CVS will come… stay tuned. If you have time you may want to try the new CVS support in the development version from it’s update center, its usability is much improved. More refactorings are on the way as well, see this.

  9. tim Says:

    Rob: You make a very good point and I have often been in situations where Eclipse won’t recognize something because of a trivial error such as a missing semi-colon. However, the Eclipse way has just become so ingrained in the way I code that without it I felt a little lost without it. Many of my dislikes about other IDE’s will be purely my habit and things that I can easily live without given enough time working in another product. It’s like moving from Windows to Linux or OS X for the first time, there are things to miss, but as you find alternatives and other nice things the old environment never did (like not-crash in the case of windows :P) the way you develop code begins to mould to your new environment and the circle of life is complete. I was really, really impressed with IDEA. It just has a level of polish and “smoothness” that other products (Eclipse included) lack. However, given that Eclipse is also extremely good, the only way I can differentiate the two comes down to things like the problem window. If IDEA had this one little thing I would have been a few hundred dollars poorer right about now :)

    Roman: The guided tour information on that page you linked to looks quite nice. Is there any idea about when Subversion support will come or if it is even on the agenda? I think what really blew me away about how far Netbeans has come is that it really felt like a totally new product. I love the amount of effort Sun have/are going to in reshaping it to solve the problems it was criticised for. It will be something that I come back to down the track and if it can exhibit the same measure of improvement that it has over the last year or two there will be no doubt that I will be something very difficult to put down :P

  10. Rob Harwood Says:

    tim,

    I understand your point of view, for sure. IDEs are a personal thing, and when you get in the groove with one IDE, it can be difficult to switch because you miss all the features you’ve grown to love. It can also be difficult to see the benefits of switching, because the first thing you see are the missing features, and it takes time to discover the features that the new IDE has that are missing or different in the old IDE.

    But it’s not all about being in a groove in the short term, because at the end of the day, someone is paying us to work (assuming we’re professional programmers). So, our time is money, and we should pick the tools that make us more productive in the long run. For some people, that will be Eclipse, for others it will be IDEA. But the judgment should come down to overall productivity, not just feature-by-feature checklists.

    For example, for myself, I rarely have any significant compile-time problems in my code. I compile and run (tests) frequently, so problems simply don’t accumulate. When I compile, I *maybe* find one or two problems and I fix them. So, for me, I do not get much productivity value out of Eclipse’s problem tracking. On the other hand, I am constantly refactoring, using code completion, and scanning for errors in my current file, so I get a lot of productivity value out of being able to work on imperfect code. For you, problem tracking is a killer feature. For me, refactoring and analyzing imperfect code is a killer feature, and problem tracking is a nice-to-have. Every time I use Eclipse I stumble over its inability to *truly* understand my code and work intelligently on it. For me, it’s not worth the trade-off to have problem tracking. I can just hit the Make button and collect the problems almost as easily. There’s no such workaround to Eclipse’s inability to work with code-in-progress.

    It takes time to discover the benefits of another IDE, especially when you are in love with your current IDE (nothing wrong with that!) and very enthusiastic about the features you’ve grown to depend on. It is easy to make simple feature comparisons and focus on what’s missing. But for the professional programmer, I believe that it is important to thoroughly evaluate an IDE, looking for the things it does differently and perhaps asking yourself, “I wonder why it does it differently? Maybe it’s a missing feature, but maybe it’s like that on purpose. Maybe it has different features which accomplish the same goal.”

  11. tim Says:

    I totally agree with what you are saying. Personally I just didn’t feel comfortable without knowing that I had compile problems (or didn’t) and as nice as the rest of the IDEA was, I just couldn’t get past it. Given that Eclipse does everything I need it to and IDEA seems to do everything bar this particular thing (and another very minor annoyance) I just couldn’t see a reason to drop what was working. I guess that was to be expected given that a large reason I went looking was more out of curosity than any real problem with my current solution.

  12. Luis de la Rosa Says:

    Tim,

    Glad to see another Eclipse on Mac user. We’ve got a group now where we talk about Eclipse on Mac at: http://groups-beta.google.com/group/eclipse-mac/

    Come by and check it out. I’d like to hear more about your experiences with Subclipse and maybe we can find a solution to the occassional restart issue, which isn’t that big a deal, you’re right.

    Luis

  13. tim Says:

    G’day Luis, what an awesome group, I’ve just joined up :D

  14. Vinod Kalladath Says:

    Ever since I used Eclipse for the first time, I decide I would never go back to any other IDE. Looks like there are more people who think so.

    But I agree with Rob. I am really annoyed with its disability to read past simple syntax errors. Hope some one fixes it soon. :)

  15. Andrew McVeigh Says:

    I really know what you mean about the eclipse error reporting. I love it too.

    The only IDE I’ve seen that has a similar feature is Omnicore codeguide (now X-develop). It shows more info than eclipse, although it still needs a compile cycle, you’ll never see a compilation error. However, it is more primitive than eclipse in many other ways. http://www.omnicore.com

    Andrew
    p.s. I have no affiliation to any IDE vendor…