Skip navigation

NetBeans 4.0: My obviously-biased-but-still-relevant review
Okay, okay, put down your weapons. I'm not trying to start a religious war here. I confess: the title was a shameless attention-grabber (using the word "perfect" is always dangerous). There is no such thing as the perfect IDE, and there likely never will be. As long as software continues to evolve upward and outward, developers will demand new productivity enhancements from their IDE.

Give me a Java-level debugger, and next I'll ask for an integrated C/C++ debugger. Show me a plain Metal-based L&F, and I'll wonder why the developers didn't use a native L&F so that my IDE looks like it actually belongs on my desktop. Tell me about the powerful build engine, and I'll complain that it doesn't play well with Ant, the de facto standard in Java build engines. And why do I have to go outside my IDE just to use a testing harness or profiling tool? Where's my JDK 1.5support? And on and on and on...

Apologies for the above (hypothetical) whining, but it demonstrates two characteristics that are universal among software developers: we're demanding (i.e. we spend a lot of time complaining, and we'll never be happy) and we're lazy (i.e. we don't want to use 17 different tools to accomplish one simple task). So what are the chances of finding a piece of software that satisfies my demanding taste and makes my life easier at the same time?

I'll admit, my requirements for an IDE are fairly atypical. Working on Java 2D, what I really need is an editor that can handle Java and C/C++ source files, and moreover a debugger that can seamlessly dive from Java into C/C++ code and back again. I'm certainly not in the majority of Java developers in that regard, so I can understand that no IDE meets all of my requirements. Regardless, I've downloaded major releases of NetBeans in the past in the hopes that some of my quiet demands would be met. Each time, I'd put it on the backburner because it just felt like it wasn't quite ready for prime-time. Sure, I could run NetBeans 3.6 on Mac OS X or Windows XP, and for the first time I felt like it actually fit in with the underlying windowing system. But that didn't really improve my productivity.

I downloaded a few of the development builds of NetBeans 4.0, and I must say that I was surprised. Sure, it was rough around the edges, but many of the little problems have been cleaned up for the recent 4.0 Beta release. I kicked the tires a bit by loading in one of my existing Ant-based projects (Mu). It quickly found all the targets from the build.xml file, so creating the deployment bundle was as simple as clicking "dist" in the list of targets. No need to struggle with importing all the various source files into a proprietary NetBeans project. Great! It just works!

Next I tried loading up another personal project of mine, Jaraoke (a karaoke app I wrote as an intern here at Sun almost five years ago; if I wasn't so lazy maybe I'd release the source code on The source code for that demo was fairly well-polished, but over time I grew unhappy with the names of some of the oft-used variables and classes, and I wanted to change the parameter lists of some of the methods. It would've taken hours to slog through the source code with emacs, trying to find all the instances of each variable and renaming them appropriately, or updating the parameter lists. Here was another good tire-kicking test for NetBeans 4.0... Just click the variable name you want to change and then click "Refactor". You supply the new name, and then NB does all the work for you, finding each use of that variable, and providing a selective list that you can easily review. When you're satisfied that everything looks right, NB will make all the necessary changes for you. What used to take hours now takes seconds. Rad! It just works!

So now I'm 2-for-2 with NetBeans 4.0, and there are plenty of other features I've yet to play around with:

  • JDK 5.0 support (pretty important when you work on the JDK itself)
  • Integrated JUnit testing
  • Integrated profiler (coming soon)


While I can't say NetBeans 4.0 is the perfect IDE, I can at least say that it's a huge step in the right direction, and it should help make me more productive in the future. If you're demanding/lazy, take NetBeans 4.0 Beta for a spin. If you find any problems, do the NetBeans team a favor and submit your feedback now; it's the only way they can get one step closer to your idea of perfection.

What's new in Java 2D?
As usual we're working hard to improve Java 2D (and the whole client-side stack). Specifically, I've been investigating performance and quality issues with the OpenGL-based pipelinethat is new in JDK 5.0. Most of the problems lie in the drivers themselves, so we're trying to be vigilant by contacting the driver manufacturers directly and making them aware of the problems. This should help improve driver quality and reduce annoying regressions so that we can start to enable the OpenGL-based pipeline by default on the platforms where it makes sense.

Right now I'm finishing up my work that enables true fullscreen and DisplayMode support on Linux/Solaris, something that developers have been demanding since we added the fullscreen APIs in JDK 1.4... The game developers out there should be happy with this change, which is targetted for the Mustang (6.0) release.

There are other perpetual projects that I'm involved with that should make life easier for those developing rich client (end-to-end) applications. And as always we're focussed on improving the end user experience: look-and-feel fidelity, high resolution display support, and graphics performance (we never stop) are all important areas that we're investigating for Mustang and Dolphin.

If you're interested in Java 2D, be sure to check out all of Chet's articles. They're packed with relevant technical information and they're a must-read if you've ever worked with images in Java 2D. (Hey look, Chet has a new picture on his blog page... Why does he look so confused?)

How To Be Good
Finally, I want to give a quick tip to all developers who give us feedback on J2SE... As always, we encourage developersto contact us for any issue they might have, whether it's a bug report, request for enhancement, or general feedback. We listen to all the feedback we get from places like JavaLobby and, but we certainly appreciate it when developers use a constructive and friendly tone. I don't think I need to provide examples, but I can tell you we're more than happy to work with developers when they contact us politely. Here in the Java group at Sun, we're all just developers in the greater Java community; don't think of it as an "us-versus-them" situation... Okay, so bottom line, politeness counts.

In my ears: The Kinks, "Village Green Preservation Society"
In my eyes: Par Lagerkvist, "The Dwarf"