Posted by campbell
on September 1, 2004 at 8:45 PM PDT
Some thoughts on the new 4.0 Beta release from the NetBeans team... What's new in Java 2D... Why politeness matters...
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.5 support?
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
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 java.net). 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 pipeline
that 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 developers to 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
java.net , 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"