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:
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.