After months of regular milestones and community feedback, Sun has released a Beta version of NetBeans 6.0. NetBeans is an Integrated Development Environment (IDE) written for programmers who use Java, Ruby, C/C++, and other languages. It competes for developer mindshare with Eclipse, Microsoft Visual Studio, JetBrains IDEA, and many other free and commercial IDEs.
Long time readers of this blog know that I'm something of an Eclipse fanboy, having written a couple of books on Eclipse and winning the first Eclipse Top Ambassador award. But I believe you should always be on the lookout for the best tools to get your job done. Before Eclipse I was a happy Visual Studio user for several years, and before that I was heavily into emacs (which isn't really an IDE but it's close enough). If I hadn't been open to new tools and ideas I'd probably still be using some homegrown text editor and a command line.
[ Read: Focus on NetBeans ]
While I'm not switching to NetBeans (or anything else) any time soon, I do find much to admire in this new release and the philosophy behind it. I had a hard time coming up with a good word to describe this but let's call it: the NetBeans attitude. I want to expand on this because I think there's a very important lesson for other software projects. So if you're looking for a highly technical point-by-point review or comparison of NetBeans then this ain't it.
So what do I like about the NetBeans attitude? First, I like the attitude that NetBeans means one thing. It's an IDE. Its entire purpose is to make life easier for developers. I'm a developer, so I'm all for anything that does that! While NetBeans does have some platform support (by which I mean you can write a non-IDE application using the NetBeans "shell") this isn't the main focus of the product. You could say the same thing about JetBrains IDEA: Both IDEA and NetBeans are IDEs first. Anything else is gravy.
I also like the attitude on the part of the NetBeans developers that they will not be daunted by a tremendous lead by their competitors. Not to mention the attitude that they actually have competitors. That competitive spirit has sometimes gotten a bit out of hand (out of context quotes on certain blogs come to mind... you know who you are), and emotions have sometimes run high, but like a football rivalry between nearby colleges it has mostly all been in good fun. When no one is looking, the teams can be caught mingling, bouncing ideas off each other, and contemplating how to beat their common foes.
I like the attitude that NetBeans will shamelessly take good ideas from other products, boil them down to their essence, and incorporate them in a way that makes sense. I didn't always like this, but I've come to the conclusion that it's a good thing. After all, Eclipse does the same thing; so does IDEA and most other programs I can think of. I do it, and you probably do it. As long as it's not just a check-list filling, throw-everything-in exercise, building on the work of others can advance the state of the art. (That's another peeve I have with patents but I digress...)
Most of all, I like the attitude that NetBeans is one coherent tool from one source. Is this less flexible than other models they might have followed? Is it less open, more controlled? Absolutely. But the NetBeans folks have decided that what's really important is developer productivity. For their intended audience, I believe that's the right choice.
What defines developer productivity? It's highly subjective. JetBrains IDEA is regarded by many people I respect to currently be tops in this category. Although I don't use the product myself, it's fun to watch someone familiar with it blaze through a demo. The only tool I've seen that comes close to that "smooth as butter" feeling is the TextMate editor. Perhaps it's simply a testament to the skill of the presenters, but I think there's more to it than that. Researchers talk about "the flow" as a state of mind where one is hyper-productive. When you're "in the flow", everything just falls into place, and nothing stands in the way between you and what you are creating.
[ Read: Focus on Eclipse ]
Just to be clear, I love Eclipse. I use it every day, both as an IDE and as a development platform for other programs. There are many areas where its depth of features is unmatched by any product, for example look at the customizations for Java code formatting. The best part of Eclipse is, IMHO, the original part that came out of OTI: the Platform UI and the Java Development Tools. Since I do almost all my coding these days with Java SE, this is a good fit for my needs. I think the way Eclipse thinks, and understand why it does what it does. Examining its source code taught me a lot about object oriented design and patterns. And Eclipse RCP can do things I didn't think Java could do just a few years ago. It's an incredibly rich environment that has a unifying effect on any commercial product that builds on top of it (disclaimer: my company does just that).
That said, with my impartial developer hat on, I see a project that has long lost its original focus. It's gone from an IDE, to a platform for building tools, to a platform for building anything, to an Apache-like open source community. The mindshare and excitement of those early versions was leveraged quite successfully by the Eclipse Foundation into many other areas. In other words, it was the brilliant Java IDE that made the other parts possible. Maybe I'm just being nostalgic, but I miss the spirit and focus of those early days of Eclipse.
I can see a little of that spirit in NetBeans, but like Eclipse it's not entirely altruistic. Sun has an agenda of their own, and they don't hesitate to use NetBeans and its unique access to push it. For example when they come up with a new version of Java EE, or a Swing application framework, or a JRuby compiler, the NetBeans team is right there in the middle so that the software and tools for the software are developed together. Frankly, Microsoft does the same kind of thing with Visual Studio, and competitors don't like it one bit. If you look at it purely from the user's point of view though, it makes sense. What good is something like JSF or JavaFX script if it's incredibly painful to develop with? Tools matter, and if you want developers to use your technology you have to give them good tools too.
In conclusion, NetBeans version 6 is the latest in a long line of continuously improving IDEs from Sun. You can read all about the list of new features and see screenshots using the links below so I won't repeat them here. If you are looking for deep Java SE support, incredibly fast compilation and turnaround, or a platform on which to build commercial software, I would have to say Eclipse is still on top. But if you want to venture outside of Java SE and need a free tool for creating GUIs, mobile development, and web development, then NetBeans should be on your short list too. Developer mindshare and loyalty is a fickle thing. Through its focus on one free open source product and one audience, NetBeans v6 may just be positioned to capture some more mindshare of its own.
For more information: