NetBeans 5.0 is a substantial upgrade to what was already a very solid IDE. This release reveals many new features, enhancements, and a slight repositioning, as Sun attempts to shine the spotlight on aspects that take NetBeans beyond the pure-play IDE.
Several NetBeans features lack direct counterparts in competing products, so it will be of great interest to sites that have specific needs such as designing GUIs for desktop Java applications and intensive collaboration requirements. However, I found that implementation details sometimes lacked care and attention to detail, resulting in a few rough edges.
Into the IDE
The NetBeans IDE is a well-designed environment for developing Java. It is more intuitive than Eclipse and, as opposed to that product, it does not get in the way of developing. You can create a complex project, code away, import resources, and build and debug the executable in NetBeans without ever looking at tutorials or consulting the help system. That's an almost impossible feat for a first-time user in Eclipse. NetBeans 5.0 has a large set of refactorings, extensive code completion, CVS (Concurrent Versions System) support integrated within the core IDE (support for Subversion is available by free plug-in), and practical, easily customized templates that convert short escape sequences into entire routines. These features are found in other IDEs as well, but I found their implementation in NetBeans particularly intuitive. As do most Java IDEs today, NetBeans indicates errors and incomplete statements as you type in a manner comparable to the IntelliSense feature in Microsoft's Visual Studio. Unfortunately, the error indicator lacks finesse in NetBeans. For example, the simple omission of a semicolon at the end of a line of code results in the entire line of code being highlighted, rather than just the errant end of the line. This is a small complaint, but along with some other minor misbehaving features, such as incorrect printing of files to HTML, it occasionally gives the IDE an unfinished feel. NetBeans does have some innovative features at this basic level: The project metadata format is an Ant file, which makes it possible for users of other IDEs to load up a project developed in NetBeans and make changes, even if they don't have the product. Enterprise Java is well supported. NetBeans bundles Apache Tomcat, which can be started, stopped, and administered from within the IDE. J2EE servers—such as WebLogic, JBoss, and soon IBM WebSphere—are supported in similar fashion, and NetBeans can deploy Web apps to those servers correctly; it knows where files need to go and what the server expects in terms of configuration. These capabilities illustrate a basic tenet of NetBeans: Tools are integrated such that you never have to leave the environment to perform development-related work. You'll also find an integrated database explorer and an HTTP inspector (to see what data is sent to the Web app and exactly what data is returned), among other bundled tools.
The true jewels
NetBeans 5.0 also provides a built-in code profiler, automatic collaboration, and a brand-new, state-of-the-art GUI form builder. These three crown jewels distinguish NetBeans from other Java IDEs. The performance profiler is integrated into the IDE and presents data on the running program, including a timing profile for every thread and a memory-usage profile for the entire app. This data is invaluable in tuning code and is generally provided by third-party tools, such as those from Quest and Compuware. In NetBeans, it's a mere button click. The resulting data can be stored in a snapshot for comparison with previous or future runs. The collaboration tools are almost automatic. When you start up the IDE, you can elect to be immediately logged on to an IM-like service, allowing you to contact other team members and easily share code and development artifacts without leaving the NetBeans environment. This integrated collaboration is an elegant way of extending the idea of NetBeans as the principal home environment for developers. Currently, the collaboration service is hosted by Sun, and team members must have log-ons for that specific server—log-ons are provided at no cost. Companies that want to host their own collaboration servers for security purposes need to run Sun's Java Studio Enterprise, which is a free—but closed source—enterprise-oriented IDE based on NetBeans. Version 5.0's new GUI builder, named Project Matisse, greatly assists developers in designing Swing-based forms and screens. It uses the usual metaphor of dragging and dropping controls and widgets from a palette onto a screen. However, Matisse adds pop-up guide bars and manages the location of controls as prescribed. New fields are automatically aligned with existing fields, and changes to one item result in the necessary changes to the others, so the endless tweaking of forms to get them to look exactly right is now a thing of the past. With Matisse, you drag, you drop, and the form comes out correctly on the first try. This feature alone makes NetBeans worth having. Sun has made clear its plans to morph NetBeans into a platform and not limit it to being just a Java IDE. For example, an upcoming release of NetBeans will formalize support for C/C++ and offer a separate "enterprise pack" that includes UML modeling capabilities and SOA (service-oriented architecture) tooling. These innovative features, and an appealing road map for future functionality, show that Sun is aggressively working on NetBeans. If the company can attract greater vendor participation via the development of plug-ins and polish NetBeans' features a little further, this IDE will easily become Eclipse's principal rival.
The other Java IDEs
The Java IDE market is currently a four-way battlefield between Eclipse, NetBeans, Oracle JDeveloper, and JetBrains' IntelliJ. (Borland's lack of updates for JBuilder and the company's announcement that it is trying to find a buyer for the product preclude its inclusion in this list.)
The 800-pound IDE gorilla is
. Its leadership position is due to the Eclipse Foundation's ability to partner with a wide variety of third parties. Outside of Windows-oriented development, vendors and open source groups provide IDE plug-ins for Eclipse before all other IDEs, while the other products wait for customer demand to drive a ported plug-in. As a result, Eclipse can legitimately claim it has established itself as a tools platform, rather than a single-language IDE. Its support for C/C++ and COBOL—and soon for PHP—bolster this claim. The road map shows Eclipse focusing on ALM (application lifecycle management) and extending itself to cover the full enterprise tool chain, not just the modeling and programming components. While this expansion work is going on, however, the Java IDE portion has lain fallow. Last year's sole upgrade added few noteworthy features, and this year's list of new capabilities do not address the difficulties of using Eclipse—a shortcoming acknowledged by many of its devout fans. This neglect creates opportunities for competitors.
The fastest and probably the smoothest of the free Java IDEs,
continues to evolve quietly. This quiet is due to Oracle's peculiar policy of not letting tools have higher release numbers than the core DBMS. As a result, JDeveloper 10.1.3 looks like a minor point release. It's not—it's much bigger than that. This version has excellent database support (naturally), very good built-in modeling tools, terrific J2EE deployment capabilities, extensive Web services functionality (including a SOAP monitor), plus state-of-the-art support for JavaServer Faces (JSF), the sequel to Struts. In addition, the product's code auditing and code suggestions are second to none. Although it lacks NetBeans' collaboration and the slick Matisse GUI builder, I believe JDeveloper is the most feature-rich free Java IDE available today.
Quality of implementation defines
. The interface is utterly intuitive, with most commands merely a right click away. The code support is more extensive than most IDEs, with highly configurable error-sniffing capabilities and extensive online help. It also includes well-designed, advanced tools for Web development, such as HTML, XHTML, JavaServer Pages (JSP), and so forth. Although it lacks the modeling tools present in some of the other for-pay IDEs (specifically, Rational's extensions to Eclipse and JBuilder), IntelliJ remains one of the finest environments in any language for pure coding. Today's Java developers fall roughly into three categories: architects and modelers who work from diagramming levels; Web-facing developers, who work primarily with JSP, Struts, and JSF (JavaServer Faces) technologies or their equivalents; and straight-ahead developers, who work mostly in pure code. The last group is particularly well suited to the Eclipse IDE, which provides technology closely attuned to the coding experience. With Eclipse, pure-code programmers will find considerable functionality, a large and active community, and many resources to maximize their productivity. Nonetheless, the Eclipse interface is not intuitive, and it takes practice to navigate comfortably. For functionality comparable to Eclipse, but with an easier interface and a low price, I suggest looking at IntelliJ IDEA from JetBrains, which presents an excellent alternative that should be evaluated by any site considering adoption of Eclipse for Java development. Either way, you will secure a tool that is the envy of all other language developers.
Learn more about this topic
- For JavaWorld's other product reviews, see our Product Reviews index page
- For more recent news, browse JavaWorld's Recent News & Reviews index page
- For more articles on IDEs, browse the Integrated Development Environments section of JavaWorld's Topical Index
This story, "NetBeans attempts to eclipse Eclipse" was originally published by InfoWorld.