As you can see, my opinion on NetBeans has evolved quite a bit. And I believe it reflected the real progress that the NetBeans team has made in improving their product, which in turn reflects Sun's investment in this space.
As I mentioned in my earlier post, I am still an IntelliJ IDEA user. (I upgraded my personal license to 7.0 recently.) However, with NetBeans and Eclipse being open source and free, I also wanted to use features in these tools that are not freely available for IDEA.
Examples are: C++ development (both Eclispe and NetBeans), UML modeling (NetBeans 6.0), and Profiling (NetBeans 6.0).
I had an opportunity to use the NetBeans 6.0 Profiler recently. And I'm quite pleased with what it can do. Since my application is not very big, the actual time running the profiler, even with different sets of configuration parameters, are done very quickly. Most of my time were spent on "setting up the projects" in NetBeans 6.0, which isn't hard either, just time consuming. (This seems to be a good time to renew my call for a way to generate project files for IDEs from simple, easy to specify project dependency description files.)
Here's a few more of my observations after actually using NetBeans 6.0 for a short time:
NetBeans 6.0 starts up fairly fast, and is pretty responsive during use
NetBeans 6.0 has a familiar feel to long time IDEA users
NetBeans 6.0 projects are like IDEA 7.0 modules
NetBeans 6.0 project groups are like IDEA 7.0 projects
NetBeans 6.0 does not have a "Built All" menu item. I have to build the projects one at a time
NetBeans 6.0 does not have a "Run All Tests" menu item
NetBeans 6.0 has global libraries but not project level libraries
NetBeans 6.0 does not like it if project root is the same as the source path root
NetBeans 6.0 projects are expressed as a build.xml file that uses subordinate Ant files in a nbproject/ subdirectory
NetBeans 6.0 will built a jar for each project and put it in a dist/ subdirectory
You better not touch the NetBeans 6.0 generated Ant build files
When project B depends on project A, A/dist/A.jar is put into various classpaths for B
The tests are not jarred and even if B depends on A, A's tests can't be seen by B's tests, this is different from IDEA
NetBeans 6.0 disallows cyclic dependencies among projects (IDEA merely warns)
NetBeans 6.0's profiler is easy to learn and use
NetBeans 6.0 profiler output are very well organized and usefully presented
NetBeans 6.0 says it supports profiling junit tests, but I can't make it to work
When a project depends on a third party jar, there are two ways to specify that dependency: a Jar file dependency, which enables code completion but not debugging, ...
... and to debug into a third party Jar, a "Library" (a Netbeans 6.0 concept) needs to be created with the proper paths and a Library dependency be created
And as far as I can tell, NetBeans 6.0 does not support certain IBM source control system
As you can see, as it stands, I can't use NetBeans 6.0 as the primary IDE for my project. However, I was able to setup NetBeans 6.0 projects to mirror my IDEA project/module structure in such a way that I can build and test everything, and run the profiler on test applications. I did gain valuable insight into the performance characteristics of my code. And for that I think my time playing with NetBeans 6.0 is well spent.
There is something magical about being able to profile your application. It's the same feeling I had when I first debugged into my Java application in the IDEA debugger.
Remember the time back then, when
System.out.println("x = " + x);
was considered a legitimate debugging technique?
A few years from now, we may view the pre NetBeans 6.0 time as the time when
long start = System.nanoTime();
doIt();
long end = System.nanoTime();
System.out.println(end - start);