Based on the Eclipse 3.3 platform, JBuilder's distinguishing features aim to assist enterprise application development for large teams. It has, for example, a built-in collaborative environment supporting code reviews, several integrated code quality-assurance features, and a Java profiler.
JBuilder 8 also introduces a new Swing designer. According to David Intersimone, Code Gear's VP and chief evangelist, "enterprises have a ton of Swing UI code, and they want to maintain that code and update it to the use the latest Java and Swing features. This tool helps to automatically migrate Swing code, and also to create new Swing UIs very easily."
Among the more interesting JBuilder 8 features is what CodeGear calls "application factories." At the 2008 EclipseCon developer conference, Artima spoke with Jeff Anders, CodeGear senior director of product marking, about that concept:
Developers, especially those new to a technology or a tool, like to learn from examples... In fact, it is not unusual for a larger application to start out as enhancements, modifications, to a set of examples, or some prototype application, provided either open-source or as part of a framework or a tool... An example is how the Rails framework allows you to quickly generate a scaffolding for a working, basic Rails application that you can then modify to your requirements... Scaffolding is not unique to Rails, however... And in some environments, prototypes or examples offer similar benefits.
In addition, many organizations build similar kinds of applications all the time: enterprise portals, reporting applications, order-entry, and so on. These applications share many similarities—certainly, more than just a framework, APIs, or languages used. Creating a new instance of an application that has already been constructed to a great extent for another project, that may involve code reuse in the sense of actually copying another substantially similar codebase and making changes to that code to suit a particular need...
Such modifications, or coding-by-example, have traditionally been looked upon as a less than desirable way to build software. Yet, that has proven an effective way, and something actually practiced in the field... Examples, or scaffoldings, the good ones, have the advantage that they codify what might be best development practices for an API, tool, or framework...
Modifications can be as simple as changing the title page text, making changes to the style or to the layout of Web pages, adding or removing fields, or adding some functionality not present in the source application.
What we are doing with Application Factories is to provide you a way to track the change you're making to an application as it evolves. We abstract those changes away from the main codebase, and describe them in an application and programming language-neutral way.
You can then, if you wish, take the metadata reflecting the changes you made to some core application, and apply [that metadata] to another instance of the core application, perhaps making further, or different, modifications. You can save those modifications as well.
And that gives you a nice way to see exactly what you changed, to revert or further modify your changes, and, most important, to share your changes with others...
This is different from a version control system, because we're talking about tracking changes independent of the underlying source files. For instance, we can describe in a precise way that you changed the title text displayed on a page. The metadata encapsulating that change can then be used independent of the source code, and even exchanged across the organization.
This will lead, over time, to a very rapid way to construct sophisticated applications. This sort of abstraction is higher-level than what most frameworks currently provide, and directly address functionality provided by an application. That higher abstraction level also makes that code-reuse occur at a higher-grained level, too.