JBuilder 2008: Bold vision, rough edges
No assembly required
Review What is the point of JBuilder, when you can simply use Eclipse? That has been the marketing challenge for CodeGear ever since it decided to scrap its home-grown Java integrated development environment and replace it with a new product based on the open-source Eclipse tools platform.
JBuilder 2007, released in May 2007, was the first of this new breed, and it has now been followed by JBuilder 2008. There are, I guess, three ways in which JBuilder adds value.
First, it is a turnkey installation, whereas making sense of the myriad plug ins and dependencies in Eclipse can be a challenge. JBuilder includes a large number of Eclipse add ons, including reporting tools, data tools, web tools, test and performance tools, and third-party additions such as the Spring IDE. The setup can also install servers like JBoss and Apache for development.
Next, the Enterprise edition includes ProjectAssist and TeamInsight, which takes a wizard-driven approach to installing a bunch of open source team development tools. These are Subversion or CVS for source code managements, Bugzilla for bug tracking, Continuum for continuous integration, XPlanner for project planning, and the Liferay portal that brings these pieces together.
These are great tools, and there is real value in having a simple install, but there are downsides. You have to use Windows Server 2003 or XP as the server, and in some cases you get old versions with no easy way to update them without stepping outside the easy ProjectAssist management tools. For example, Liferay 4.0.0 is supplied, yet the latest is 5.0.1.
Finally, JBuilder 2008 comes with proprietary plug ins from CodeGear's parent Borland Software. The main features are the OptimizeIt profiler, the Together modelling and code visualization tool, along with a brand new thing called Application Factories. There's also a new Swing designer, which turns out to be the Instantiations WindowBuilder product. A smart move, given that the Eclipse Visual Editor project is sadly moribund, and that the old JBuilder Swing designer is still much missed. WindowBuilder meets the need nicely.
Factory code generation
The big new feature is Application Factories, which CodeGear is touting as a significant innovation. It has far-reaching goals, including generating code, and capturing developer intent in order to speed learning for new team members. JBuilder's principal architect Ravi Kumar said: "No other IDE is even attempting to do what we're doing... the IDE is application aware, that is our innovation."
There are two core elements here. First, there is a tagging and diagramming tool that lets you tag application resources and populate a diagram with hierarchical labels that link to the tags.
For example, you could create a tag called Order Processing, and apply it to all the resources relevant to that operation. JBuilder lets you apply a "tag focus" that filters the Eclipse project navigator or package explorer to show only the resources that have that selected tag. This metadata is stored in an Application Factory project, of which you can have only one per Eclipse workspace.
The API available to your script depends on which DOM you select, where a DOM is Java code exposed to scripting, with the range of available DOMs including Hibernate and Maven, as well as the Eclipse API. You can add a user interface that lets the user enter values or make choices. Scripts can be thought of as application-specific tools, and this is what Kumar means when he talks about the IDE becoming application aware.
Application Factory projects can be exported as modules. In this case, they become wizards that can generate an entire application. The Application Factory Explorer in JBuilder lets you browse a repository of such modules, and seven are supplied with the product, including Sun Microsystems' Pet Store sample, and basic JSF, Spring and Struts applications. CodeGear envisages a future market for commercial modules.
Unfortunately JBuilder 2008 has rough edges and feels rushed, as Kumar acknowledges. "There are places where you'll hit an exception or a roadblock, we're completely aware of it, and we'll do rolling updates," he told us.
The user interface for the Application Factory features is poor and hard to learn. The documentation is skimpy and in some places still refers to JBuilder 2007. It took a while to find any reference for the scripting DOMs - we finally figured out that a mostly empty Javadoc is all you get.
An example Application Factory for a Bookstore failed with a Maven error, until I discovered that it only works with MySQL - I was trying to user CodeGear's own Blackfish SQL, silly me. This last error highlighted an inherent problem with wizards that generate code: if something goes wrong, you end up troubleshooting the wizard as well as the code it generates.
Overall, JBuilder 2008 has a bold vision but does not yet deliver it in full. In the meantime it is a decent Java IDE, and useful features like Together diagramming live on, though you can also obtain this as a separate plug in.
Whether JBuilder itself is a good investment depends largely on how much you value having a supported configuration of open source tools, rather than assembling the same pieces by other means.®