NetBeans IDE has been my prefered IDE for the last 1.5 years. The reasons are several. OpenSource software, continuously extended and last but not least, it is free. While it doesn’t have as many features as some £3,000+ IDEs, it has enough to keep you busy.
The features that I find most useful and use every day because they speed up the development.
There is the DB explorer that lets me browse a data base to see the tables, data types, values and lets me execute any queries (including updates).
The CVS integration is great as it lets your check in and out source files directly from the development environment. I have only tested it together with Microsoft VSS (what a pain that is btw) but it supports other CVS profiles. While it is handy it can be a bit slow on large directory structures so I tend to use it for single files only. When I want to manipulate large amount of source files, I use the VSS client instead.
NetBeans has good XML and XSL support. It lets you validate your XML documents and you can do XSL transformations right there in the IDE. No XSLT debugging though, so get your self a decent XSL IDE (XML Spy or Xcelerator) for serious XSLT.
Javadocs are always tedious to write but NetBeans makes your life little bit easier. It has a nice JavaDoc GUI where all the important fields are listed. It can also auto correct missing fields for you which again saves time.
Ant is integrated in a way that you can browse your build.xml files and execute specific targets.
If you ever need to write localised property files NetBeans helps out with that as well. It will display keys and the various localised values in a matrix, making it easier to modify them all at once.
The GUI Editing in NetBeans looks extensive but I have not got around using it since all work has been web related and did not include any AWT or Swing coding.
There are some disadvantages that I have found. I miss a refactoring functionality the most. Other IDE’s (eg IntelliJ) have features like “find usages” of a method or “refactor” that lets you change package and method names across the whole source. With NetBeans, I have to use the “Find…” functionality and manually make any changes.
Large projects often have source code across multiple modules and directories but are built into one single directory structure. One approach that other IDEs take is that they allow you to set up matching patterns on where to build a source. You probably want different directories for Servlets and other front-end classes, libraries and EJBs. NetBeans is very difficult to set up to build to multiple targets. One has to basically manually specify the build directory for each source file… time consuming.
I also miss J2EE support (templates, wizards). Having grown custom to Borland JBuilder‘s J2ee support I find some task very repetitive and manual in NetBeans.
Another new and upcoming OpenSource IDE is Eclipse. Some knowledgeable people (Sean and Matt) have been swearing by it, saying that it is indeed better than NetBeans. I had a brief look at it but because the UI and other crucial details seems to be working differently I did not dare to use it for actual development yet.