Java IDEs are one of the most used app dev tools in corporate development. They are also among the most capable developer products on the market. With that in mind, it’s time to ask yourself: Are you using the Java IDE best suited to your needs, or is it time to re-evaluate?
InfoWorld last did a head-to-head comparison of these products in March 2005, and since then, the IDEs have all undergone important changes. This time, I decided to examine the winner of that review (Borland JBuilder) plus the winners of InfoWorld’s Technology of the Year awards, in the Java IDE product category, for 2006 and 2007 — IBM Rational and Sun NetBeans, respectively.
I was impressed by how much these products have matured during the past two years but surprised that they haven’t advanced further in some respects. Other products in the Java developer’s toolkit — static code analysis, unit testing, and build management, for example — have seen more progress in this time frame.
IBM Rational Application Developer for WebSphere Software 7.0
Big Blue’s entry, colloquially referred to as RAD 7, is based on Eclipse, the open source software framework that also powers Borland/CodeGear’s JBuilder product line. Eclipse was initially a Java IDE, but in recent years, it’s been repositioned as a framework into which manifold plug-ins can be added, thereby constructing all sorts of tools (many of which have nothing to do with Java development).
Eclipse’s new framework orientation has raised some concerns that the original Java IDE concept has been deprioritized. This perception probably has some validity, but it’s offset by the fact that Eclipse currently has the largest community of Java plug-ins currently available.
RAD 7 adds several components to its modified Eclipse base. As befits IBM, many of these are oriented toward enterprise applications. They include portlet and portal development tools, as well as extensive database support. The database support, which predictably favors IBM’s DB2, includes the ability to write user-defined functions (UDFs), stored procedures, and SQLJ code—all unique capabilities among the products reviewed here.
Diagramming and modeling are limited, however: RAD 7 supports only two UML diagrams (versus eight and nine for NetBeans and JBuilder, respectively). For fuller diagram support from IBM, you must buy the more expensive IBM Rational Software Architect.
With RAD 7, you can develop Web services and Web service clients, generate WSDL, and even do unit testing against a private UDDI service. In addition, there is support for IBM’s DADX, a DB2 XML extension for use by Web services. Alas, the IBM-centricity factors into the UDDI testing as well: It supports only private registries that use IBM-based technologies.
At the coding level, RAD 7 provides a static analysis tool that incorporates more than 200 rules developed by IBM regarding possible Java defects and coding errors. While the other IDEs in this review offer more rules, IBM’s solution flagged errors that those products did not catch. The rules were enhanced by good descriptions of the reasons for the rules and sample code for fixing the problems.
This extensive help reflects a long-standing IBM tradition of great documentation. RAD has links to comprehensive tutorials and IBM’s Web site — well known in the developer community for its rich collection of articles — provides additional resources.
If applications require a scripting language to “glue” portions together, RAD 7 has built-in support for Jython (Java-based Python). Unfortunately, the IDE cannot tell automatically what is Jython and what is Java, although syntactically the languages are entirely different. This can lead to actions that make the IDE balk.
This flaw, small as it is, reflects a frequent experience I had with RAD 7 — many features are not implemented well. For example, installing the software was very difficult. After considerable support from IBM, I got the product installed correctly, although the original problems were never identified.
There’s more. An option to spell-check comments and literals (a useful capability) does not work because IBM ships no dictionary; if the feature is enabled, it marks all words as misspelled. The code-checking tools occasionally prescribe invalid corrections. Dynamic help in dialogs frequently takes you to the wrong level of help, so you’re forced to navigate back to your specific context.
Over time, the accumulation of these problems makes this otherwise good product frustrating to use.
I have one other complaint: IBM is far behind the other vendors in supporting existing Java standards. It is the only IDE in this review that has no support for either Java EE 5 or Java SE 6.
I’d recommend RAD 7 to sites already heavily committed to IBM, due to the product’s special support for those products, especially DB2 and WebSphere. Also, sites that want the same IDE for developers in many countries should like RAD 7, as it is implemented in far more foreign languages than any other IDE. However, the comparatively high price and my other complaints should encourage sites to examine all options before committing their dollars.
Borland/CodeGear JBuilder 2007 Enterprise Edition
JBuilder 2007 garnered first place in our last roundup. This edition is the first release since the product was ported to the Eclipse platform. It is shipped by CodeGear, a division of Borland that focuses on IDE tools.
Due to Borland’s well-publicized difficulties and the fact that this is the first release on a new platform, I expected a good product with rough edges. Instead, I found a very smooth, very robust IDE with many innovative features. It’s safe to say that CodeGear decided to throw everything it had at this release — and succeeded brilliantly.
For Java coding, JBuilder has three different sets of code auditors and analyzers: the open-source PMD, Findbugs, and Borland’s own code-inspection tool. These work well together (in fact, they run the risk of overflowing the developer with flagged items), although they lack actionable explanations of the problem as well as the thoughtful resolution recommendations found in IBM’s RAD 7 product.
JBuilder bundles a metrics package that is more extensive than any I’ve seen in any IDE. It generates more than 80 different metrics, displaying them diagrammatically or in spreadsheet format. (Curiously, the metrics do not include the maintainability index, although all the metrics that make up this index are computed.) You can turn off the metrics you’re not interested in and set thresholds for those you do want to track. JBuilder also saves metrics snapshots so that you can compare the current state of the codebase with previous runs to make sure the numbers are trending in the right direction.
CodeGear integrates JBuilder’s OptimizeIt suite of tools, which Borland offered for years as a separate product. OptimizeIt provides numerous high-resolution views into the performance and memory consumption of the software. It includes code coverage analysis (although only as a percentage of the class covered, rather than on a line-by-line basis) and other insights into what is happening beneath the covers, including per-thread data.
JBuilder also offers impressive collaborative features. It sports a developer-oriented messaging system, which helps with code reviews as well as developer communication. It uses a peer-to-peer design that, unfortunately, works only with peers on the same network segment.
For team coordination, JBuilder provides TeamInsight, which is an easily configurable portal server that comprises key open source tools: Subversion, Bugzilla, Continuum, and XPlanner. This portal is accessible through a Web interface or via JBuilder and includes numerous project reports and metrics. Neither of the other IDEs comes close to this level of team integration.
JBuilder feels solid throughout — a remarkable achievement given its status as a first release on Eclipse. The only bugs I ran into were frequent help icons that did not work. My complaints focus on features that are not implemented, such as the lack of visual designers for JSP or JSF (although these are coming shortly). The product also does not generate deployment files for applications using DB2, which is a curious omission. Finally, it currently ships on Windows only. Linux and Mac versions are slated for May.
At $1,999 for the edition I reviewed, JBuilder is not cheap, but it provides tremendous bang for the buck. For developers who don’t need all the high-end features, there are professional and developer versions of JBuilder available for $799 and $399, respectively.
Sun NetBeans 5.5
Sun’s NetBeans product is the only completely open source product in this review, available at no cost from netbeans.org. Unlike the other packages, NetBeans requires a little assembly; you start with the core NetBeans platform and add several “packs,” depending on your needs.
Currently, Sun offers an Enterprise pack and a Visual Web pack (both used in this review), a mobility pack for J2ME programming, and a C/C++ pack. A profiler (also included in this review) is a separate pack. These packs are supersets of the common IDE plug-ins and generally provide substantial new functionality. Once I downloaded the packs, I installed them with no difficulty.
When I first examined NetBeans, several years ago, it was more of a tagalong IDE with some good features, rather than a true peer of the other Java IDE products. This is no longer the case, and NetBeans’ popularity reflects this: A December 2006 survey by BZ Research shows that NetBeans enjoyed robust growth last year and is now in second place behind only Eclipse (which maintains a comfortable lead).
For enterprise computing, NetBeans provides several useful features, including support for Java EE 5 in the form of Sun’s GlassFish project. The IDE has good tooling for services-based enterprise development, be it SOA or just plain Web services. For example, NetBeans is the only product reviewed here with full diagramming and modeling capabilities for BPEL.
The enterprise services offerings are offset, however, by lack of support for common products. NetBeans does not support IBM’s WebSphere app server, and it lacks integrated support for any database other than JavaDB. The latter point needs some clarification, though: NetBeans will recognize any JDBC-accessible database, but it generates deployment files and exploits DBMS-specific features only for JavaDB.
Collaboration features are very good. NetBeans has built-in facilities for real-time collaboration between developers, including chat and code-sharing capabilities.
Unlike these features in JBuilder, NetBeans’ design is server-based. You can set up your own server for this communication or use one provided by Sun at no charge. You simply log in to Sun’s server, and any developers in your group are displayed along with their login status — a design that is similar to presence awareness in IM products.
As for GUI design, NetBeans bundles Matisse, which is the best GUI layout tool of its kind. As you drag and drop widgets onto panels and dialogs, they automatically arrange themselves correctly. Guidelines for optimal and alternative placements pop up during the drag-and-drop operations. Matisse then generates code from the design.
This tool alone makes NetBeans the IDE of choice for sites that do a lot of Swing-based interfaces, as Matisse works only with Swing. Fortunately, due to steady advances in Swing performance and look-and-feel, this is no longer the limitation it once was.
Whereas the other Java IDEs in this review all use their own proprietary formats to store project metadata, NetBeans smartly relies on Ant files to hold project configuration data (in fact, it uses Ant, the open source Java equivalent of make, to drive builds). This has one important advantage: In teams that use multiple Java IDEs, any other IDE can load and run a NetBeans project without having to convert it manually or import it piecemeal.
There is a downside to the use of Ant files: NetBeans supports only a single runtime configuration. Most other IDEs let you choose from as many runtime configurations as you’re willing to write — not NetBeans. Instead, you must change the one configuration by hand each time you want to change the parameters you pass to your application. (The upcoming 6.0 release of the IDE remedies this problem.)
I ran into no bugs using NetBeans, and it has a snappy feel except when running instrumented code in the profiler. My only complaint about the user experience is that Sun does not use anti-aliased fonts, so text is more difficult to read than in Eclipse-based solutions.
Having trouble installing and setting up Win10? You aren’t alone. Here are many of the most common...
It's all about knowing how to build an open source community -- plus experience running applications in...
Win7 Update scans got you fuming? Here’s how to make the most of Microsoft’s 'magic' speed-up patch
The proliferation of insecure devices in every facet of our lives will have consequences far beyond the...
While earning ability shouldn't be the motivation for learning a new language, it can help in making...
Our coding crystal ball clues you into the twists and turns your programming career may take in the...
Microsoft Teams Services adds GitHub integration and easier pull requests