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.)
Eclipse
The 800-pound IDE gorilla is
Eclipse. 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.
Oracle JDeveloper
The fastest and probably the smoothest of the free Java IDEs,
JDeveloper 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.
JetBrainsIntelliJ
Quality of implementation defines
IntelliJ. 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.