March 24, 2008

New toy, new joy

I must admit, for years I've had a love-hate relationship with IntelliJ IDEA and despite IDEA giving me plenty of headaches throughout the years I've always returned for it's (imho) superior code editor. Working as a consultant, though, you don't always have a choice and sometimes you are required to use Eclipse or (very rarely) Netbeans.

Looking at pre-6.0 versions of Netbeans, I've always felt that it was lagging behind in providing crucial features which the other two IDEs did have and thus I never really considered it to be my IDE of choice. Some months ago, though, I gave 6.0 a serious go and used it for one of my little home-brew projects and I was fascinated about how much features have been added, especially in the field of EJB 3.0-development.

While using it I discovered a number of extremely useful features such as integrated UML support, an enourmosly well-implemented Maven-plugin (Eclipse and IntelliJ-plugin writers, beware) and that it shared lot's of shortcuts with IDEA... oh joy! I also found a great feature which I find deserves more exposure: Design Pattern aids. You can actually apply a large number of GoF and J2EE Design Patterns to your existing code... I'm almost drooling just thinking about it and I rarely get excited that easily.

Naturally, I was excited when the first beta release of Netbeans 6.1 was announced about a couple of days ago and basically downloaded it right away and started experimenting with it the second I came home from work... well, truth be told, I already started using it at work. Thanks to using Maven as project descriptor it was easy to just open the same project in Netbeans without wasting a lot of time setting up the project in the new environment.

Anyway, let me share my first experiences with you...

At first glance not that much changed, except responsivness. Just as promised by the developers of Netbeans, the IDE actually does feel faster and not only in regards to startup-time but especially when doing code-completion actions which previously caused noticable lag in the IDE. This, of course, is my subjective opinion and I haven't performed any measurements. However, it's not about milliseconds with GUIs, it's about the performance as it is perceived by the user and in my case it's faster. One thing that did change is that Netbeans now shows memory usage by default, much like IntelliJ IDEA.

Besides that I found that editing of JavaScripts has become more "IDEA-like", it basically treats JavaScript just like any other code-file and thus you can things like code completion and most of the well-known refactorings.

I did notice a new feature called Shared Libraries which supposedly makes sharing projects with dependencies easier than before. I didn't give it a go myself, since I am normally using Maven, which handles dependencies differently anyway.

I find it also noteworthy that I discovered a number of new and updated plugins while surfing through the plugin repository. Amongst others I installed the new FindBugs plugin, neat! This is a nice and handy addition, at least for those checking the quality of their code with FindBugs (and you should... :D). Besides that I found that one plugin which I do use daily has been updated: The JBoss Application Server plugin. While I was unable to add JBoss 5.0 as an AppServer in Netbeans 6.0, it's now possible.

Ultimately, while scanning the beta for new features I found a number of other things, namely support for Sailfin (an extension to GlassFish which adds support for SIP) and JavaBeans (no, neither EJBs nor POJOs... actual JavaBean components).

However, where there is good there is almost always bad and this wouldn't be a very objective post if I didn't mentoin the bad things I discovered. One thing that I discovered is that the Create Facade for Entities-feature seems to be broken (at least in the build I am using). Bummer! Another thing is that I occasionally get a SAXException when going through the plugin repository and last but not least: sometimes dialogs don't refresh and the only way to fix it is to press Escape and reopen it. If you changed something that was worth keeping then you are in a bit of a pickle. I am trying to be forgiving about it, though... after all, it's still in beta!