|By Janice J. Heiss, June 23, 2005|
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.
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."
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.
"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."
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.
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."
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
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.
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."
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.
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.
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.
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.