As part of Sun
Developer Tools Month, we caught up with Trung Duc Tran, the
Chief Architect for NetBeans. Tran is responsible for setting the direction
of NetBeans and for assuring strong tool support for the core technologies
of the Java platform. Tran joined Sun Microsystems in 2000 and has
been working on NetBeans ever since. He built the perf team for NetBeans 3.5, a completely new windowing system in 3.6, and a new
project system based on Apache Ant, which is at the core of NetBeans
4.0. We met with him to explore the challenges of creating a quality
tool.
One of your roles is to drive NetBeans toward increasing adoption. How is this going? What are the key elements in doing this?
It's going well. We have tripled our active use base in the past nine months. This is due to several factors. First, the product is better. Second, we got better at spreading the word.
Misconceptions About NetBeans
NetBeans Releases
The final versions of NetBeans Integrated Development Environment
(IDE) 4.1 and Mobility Pack 4.1 have been released. NetBeans IDE 4.1
introduces support for the development of applications on the J2EE
1.4 platform and their deployment to the Sun Java System Application
Server 8.1 Platform Edition.
NetBeans 4.1 highlights and further information can be found at these locations:
Developers can complement the 4.1 release with the NetBeans
Profiler.
|
|
Are there any key misconceptions that prevent people from adopting NetBeans?
"Current feedback tells us that our UI is now among the best of
existing Java IDEs. We're continuing to work hard to improve ease
of use."
Trung Duc Tran
Chief Architect for NetBeans |
|
That NetBeans is slow and ugly. I have to admit that this was
true two years ago but not anymore. We have improved the user
interface (UI) and put procedures in place to catch regressions on time. In the 3.6
release, we completely rewrote the windowing system and have
kept improving it ever since. Current feedback tells us that our UI
is now among the best of existing Java technology IDEs. We're continuing to
work hard to improve ease of use.
There are different types of NetBeans users: those who want to
contribute to help build an IDE and those who need a free IDE to
build their application. Can you speak to the different interests
and needs of these two groups? What do they each need to understand
about NetBeans?
Let's talk about the second group, the end users, first. They are
the whole purpose of our work. NetBeans is for them. They care
about how the IDE helps them write better code faster. The
overwhelming majority of them don't want to spend time
customizing the IDE or finding plug-ins when the feature set of the
IDE is not rich enough. NetBeans is very good at getting these
users up and running quickly. "It just works" is our motto.
We also try to cover a wide range of Java technologies. Now that we've
added support for Enterprise JavaBeans (EJB) and web service
development in 4.1, you can use NetBeans to develop Java 2
Platform, Micro Edition (J2ME), Java 2 Platform, Standard Edition
(J2SE), as well as Java 2 Platform, Enterprise Edition (J2EE)
applications -- from the smallest to the biggest platforms. This
makes the IDE the ideal learning tool for anyone who wants to
expand their Java programming knowledge.
A fairly small group of developers are working on the NetBeans
code, which is fine. I don't believe that putting more people on a
project will make it go faster. And it will definitely not be better.
However, a much larger number of developers are building
modules for the NetBeans IDE or rich client applications on top of
the NetBeans platform. I am repeatedly surprised when I hear
about the kind of apps being built on top of the platform. This is
possibly thanks to NetBeans' modular architecture. You can add
your branding; the name and icon of your app; develop one, or two,
or many modules to implement features specific to your domain; or
you can reuse some modules that already exist in NetBeans if you want.
And you have a rich client app that has nothing to do with an
IDE.
J2EE and Web Services
"User feedback is the key in helping us decide which
enhancements will be implemented in the next release and which
will have to wait for later."
Trung Duc Tran
Chief Architect for NetBeans |
|
J2EE and web services support has been added to NetBeans. What is the significance of this?
Both are complex technologies. There is quite a lot of plumbing
code that you have to write in addition to the business logic. The
IDE can now do a lot of it for you. Setting up an enterprise app
project or an EJB project is easy within the IDE but is a fairly
tedious task if you have to do it manually. All the plumbing code is
generated, and you can concentrate on the business logic. The
whole cycle is supported, including debugging. Soon, with the
final release of the profiler, you will also be able to profile your
EJBs and web services.
Of course, because this is the first release of the IDE with the new
and large feature set, there are some rough corners and missing
features that we would like to have included but did not, because
we ran out of time. We plan to expand J2EE and web services
support. User feedback is the key in helping us decide which
enhancements will be implemented in the next release and which
will have to wait for later.
How about the upcoming J2EE 5.0?
Work on adding support for the new style of J2EE development
has already started. We will have the tool support ready when J2EE
5.0 is out.
At NetBeans, we use the release train model. Work on multiple
releases is running in parallel. We also follow the
"release-early, release-often" open source philosophy, which is a great way
to get user feedback and evolve the product to meet users' needs
and expectations.
How stable is NetBeans 4.1 on Java SE 6.0?
Java SE 6 is still in pre-beta stage, but I run NetBeans on it on
my laptop. Although there are occasional problems, most of them
resolve quickly. To be precise, I don't use 4.1. Like many other
NetBeans developers, I use the latest nightly build or the IDE I
built myself from our CVS (Concurrent Versioning System). This
is an example of the "eat your own dog food" philosophy.
Admittedly, if you want to live on the bleeding edge, you do
bleed sometimes -- but it's a lot of fun.
NetBeans and Eclipse
Let's take the bull by the horns and address some claims that
Eclipse is superior to NetBeans -- claims that may no longer hold
now that NetBeans 4.1 has arrived. Some people have said that
Eclipse is faster and has more flexibility because of its plug-in
architecture. Others say that Eclipse has better build support
because its Ant support is more flexible and has more plug-ins. How
do you respond?
"It's simply untrue that Eclipse is faster -- plenty of postings on
public forums say the opposite."
Trung Duc Tran
Chief Architect for NetBeans |
|
It's simply untrue that Eclipse is faster -- plenty of postings on
public forums say the opposite. We have come a long way since
NetBeans 3.4. Regarding architecture, both Eclipse and NetBeans
are built around a small core with all features implemented as
plug-ins. There are zillions of differences in details but,
architecturally speaking, both follow the same philosophy.
Eclipse has Ant support, just like any other Java IDE these days,
and just as NetBeans has since 3.1 appeared four years ago. NetBeans
is unique in that its project system is based entirely on Ant. We
offer the highest degree of integration. Ant gives NetBeans users
tremendous opportunities to expand the IDE's capabilities. People
are now doing things with NetBeans and Ant that, a year ago, when we
redesigned that part of the IDE in the 4.0 release, I wouldn't have
thought possible.
Today, Eclipse has a lot more plug-ins than NetBeans, but
-- and this is a big "but" -- the value is not in the number of
plug-ins. I could even be sarcastic and claim that the need to
install external plug-ins is an indication of the poor quality of
the core IDE. Users care about the capabilities of the tool and how
all of the features fit together to support what they want to
accomplish. Having a lot of loosely coupled features thrown into a
single app doesn't necessarily help anyone. Remember what IDE stands
for: Integrated Development Environment. The word integrated is
important.
Don't get me wrong: Plug-ins are important for specialized
technologies. But judging the quality of the IDE based on the
number of external plug-ins is way too simple. Support for
important mainstream technologies should already be in the core
IDE. It should work out of the box.
What about the idea that features in Eclipse -- such as QuickFix,
QuickDiff, and easy navigation within source code using
bookmarks or the class outlines -- give it an advantage?
This is the area where we get a lot of user feedback. We are
working to fix this in the next couple of releases.
Some argue that Eclipse supports more CVS connection types
than NetBeans does. In particular, NetBeans only has built-in support
for the pserver protocol, which is inherently insecure because it
transmits passwords in the clear. Eclipse supports both pserver
and ssh.
The CVS integration in NetBeans is being rewritten to better fit
the user workflow, and ssh connection type will be supported out of the
box. This is slated for the next release.
Upcoming Release
When is the next release of NetBeans? And what will it
contain?
"One critique of 4.1 that I've heard is that it doesn't offer many
improvements outside of J2EE and web services support. That's
not accurate."
Trung Duc Tran
Chief Architect for NetBeans |
|
We are looking at the time frame of November 2005. The list of
potential features is long. We're still in the planning phase and
don't have the final list yet.
One critique of 4.1 that I've heard is that it doesn't offer many
improvements outside of J2EE and web services support. That's
not accurate. Several features added in 4.1, which are
small but critical for certain users, didn't make it into 4.0.
There will be more for non-J2EE developers in the next release.
The notable feature in this area is the new GUI builder (code name
Project Matisse). Swing GUI design can be fun. This feature is
being integrated into the main codeline and made available in
nightly development builds right now.
We'll expand and polish the J2EE and web services support, and
we'll add integration with the most popular application servers,
plus more refactorings and a smarter Java editor. Some of these
additions may be available through the auto update center for
NetBeans 4.1, so users won't have to wait for the next release.
Once we have a draft plan, it will be published on the web site
for people to review and comment.
Looking Ahead
What kinds of features do you expect to add in the next few
years?
A few years is a very long time in the IDE space. We will keep
up with the progress in the Java platform and provide developer
support for all of the important new technologies. We already
mentioned J2EE 5.0, but there are more. We'll look at the other
programming languages as well, especially the JVM-based
dynamic languages, like Groovy, Jython, and BeanShell. The Java
platform is bigger than the Java programming language.
We will continue innovating as in the Ant-based project system,
the profiler that came straight from Sun Microsystems
Laboratories, and the new GUI layout builder. There's more on the
way. I can't say what and when, but given the number of ongoing
projects and what the developers are experimenting with, it's safe
to say we'll have quite a few cool features in the upcoming
releases.
But more important than the individual features is how they are
implemented in the IDE and whether they interact with each other
in the way the user wants and expects -- so that the sum is greater
than the parts. Traditionally, NetBeans has covered a lot of
technologies, but we didn't do enough initially in finding out how
real developers use those technologies together to build their
applications. This has changed.
Revising NetBeans
Tell us a little about what drives the process of revising
NetBeans, which continues to improve. How does it work? How
are the crucial decisions made about the architecture?
You're right that since last year, starting with release 3.6,
there have been a lot of improvements in NetBeans. We didn't
have a master plan at the beginning. Nobody said, "Starting today
we all will work harder and smarter to make the IDE better." Not
that we didn't work hard and smart and that the IDE didn't get better,
but there was no such plan.
Perhaps there was a change in our mind-set. NetBeans has a long
history. It always had a very modular architecture. I remember
that when I joined the team, many colleagues were wearing T-shirts
that said, "Build your own IDE," meaning that everything is built
as modules: Anyone can pick and choose or write some modules
themselves, put them together, and have a custom-made IDE.
What changed recently is the focus on UI, on usability. We do
usability studies after each milestone and make corrections. We
started to look at the IDE from the user's point of view, not from
the architectural point of view. Seeing real people struggling with
what we implemented can be an eye-opening experience. We
didn't hesitate to re-implement certain things in the IDE several
times when we saw that the current implementation didn't work for
users. Many developers have spent countless hours making the
pixels look right.
Most software developers are not trained to make good UIs, and we
are no exception. But we realized that the IDE is first and foremost
a GUI desktop program, so we had to learn how to do UI design.
UI programming is hard, a lot harder than, say, using Java class
loaders or decompiling and understanding Java bytecode. Very
few people are aware of this. We are fortunate to have some very
good UI designers on our team.
NetBeans at the 2005 JavaOne Conference
What can you tell us about the NetBeans Software Day to be
held the day before the 2005 JavaOne conference this year? What
will take place there?
To see the event program, go to the
NetBeans
web site. Anyone interested in NetBeans is encouraged to attend.
It's free. This is a good chance to meet the NetBeans developers
and our special guests in person.
Tell us about the new book, The NetBeans Field Guide. I
understand that the first 300 people who register for NetBeans
Software Day in San Francisco on June 26, 2005, get a free copy.
Given all the significant changes we made in NetBeans 4.0 and
4.1, this book is a handy companion for users who want to take
advantage of all the power the IDE has to offer. I found a few
things about NetBeans in the book that I didn't know myself. I
highly recommend it.
See Also
|