Recently, I had the opportunity to work with the latest version of Object-Venture's J2EE development tool: ObjectAssembler. ObjectVenture promotes ObjectAssembler 2.5 as a "smart" development tool that simplifies and accelerates J2EE development. This is a popular claim among Java tools, so I decided to put it to the test. My experience showed that ObjectAssembler lives up to the challenge.
Deployment to most J2EE application servers
ObjectAssembler Enterprise is available as a standalone environment or as a plug-in for Borland's JBuilder, Sun ONE Studio, or NetBeans. I downloaded the standalone evaluation version of ObjectAssember 2.5.2, which is built atop the NetBeans IDE core. After downloading and completing the InstallAnywhere installation, I was up and running without incident in about three minutes. Just be sure you use a JDK that's 1.4 or higher.
One of the tool's most touted abilities is its visual "component" approach to J2EE development. To experience this, I created a very simple J2EE application containing a JSP, servlet, and session EJB that would reverse a string.
ObjectAssembler's interface consists of three visual "workspaces." I spent most of my development time in ObjectAssembler's Component Workspace, where J2EE components can be visually created, modified, and maintained.
ObjectAssembler supports many components, which are created through a simple wizard. The components are broken up into several categories:
General: Interface, JavaBean, value object
I started by creating my servlet. Once I walked through the wizard, I noticed an example of ObjectAssembler's so-called "IntelliSynch" functionality that warned: "Servlet should implement a doPost or doGet" (see Figure 1). This warning seemed to go beyond enforcing interface adherence by offering general development tips. I found that the tool's tips and warnings do a good job (especially with novice developers) of finding silly errors. Beyond just identifying a problem, I was typically able to right-click on the warnings to implement a suggested fix with one-click.
While creating my JSP, the tool offered menus for adding directives, scriptlets, expressions, and tags. In addition to support for standard JSP tags, the tool allows importing of custom tag libraries and then enforces required attributes and tags. I couldn't help being impressed by how much easier JSP development could be with ObjectAssembler.
Last, I created a session bean using the EJB wizard (see Figure 2). In addition to wizards, the tool offers the ability to import and maintain existing components. This was reassuring to me, indicating that ObjectAssember doesn't use proprietary repositories to maintain applications. To give IntelliSynch another test, I wrote the bean's method by hand, and, true to form, the tool visually added the method to the component in its Detail View.
With the components for my simple application complete, I checked out the Assembly Workspace. The interface offered clean organization of my components, archives, and configuration files, with the ability to edit any item within the tool.
To deploy, I right-clicked on the enterprise application and selected Generate EAR. ObjectAssembler compiled the necessary classes and packed up the EAR. The tool contains a "deployment versioning" feature that preserves application server-specific deployment descriptors from previous archives, and allows you to go back into the tool and make changes to your code without having to re-create the descriptors.
A compelling feature of ObjectAssembler Enterprise is its ambitious support of software patterns, which allows you to capture designs and best practices for software development.
Traditionally, patterns have been described informally or as UML. ObjectVenture has developed an XML-based language to represent patterns. PCML, which ObjectVenture is working to standardize, allows patterns to be exchanged, modified, or extended in a human and machine-readable format. ObjectAssembler 2.5 Enterprise Edition ships with a version of Sun's Java Center Patterns Catalog represented in PCML.
The impressive part of ObjectAssembler's pattern support is that not only can you easily create and modify patterns, but the tool actually tracks patterns after they are applied and can enforce them during development. If part of the pattern is not complete or the source code is modified and breaks the pattern, the tool informs the developer and assists in correcting the problem. I immediately thought of the potential; it's like having an architect looking over the developer's shoulder, keeping the project in sync with the original design.
Overall, I had a very positive experience with ObjectAssembler. Like any tool, however, it's not without problems. The documentation is not very comprehensive and I wanted more examples. ObjectAssembler's user manual is adequate, but the online help was somewhat thin.
Another minor flaw is that ObjectAssembler's integrated application server support is currently limited to WebLogic, JBoss, and Tomcat. ObjectAssembler does generate a J2EE-compliant archive that can be deployed to any J2EE-compliant application server. ObjectVenture indicated they would have additional application server integration available shortly.
In total, I was impressed with ObjectAssembler. I see its visual J2EE component and Struts development features as particularly useful for coaching development and reducing errors. The pattern support and the introduction of PCML show promise for enforcing design decisions throughout development, in particular on larger teams.
It's not often that a development tool lives up to its claims of being helpful yet unobtrusive. ObjectVenture's ObjectAssembler seems to meet these qualities and is well worth a look.
2 Shaker Rd.
Shirley, MA 01464
E-mail: [email protected]
Platforms: Any platform with JDK 1.3.x support. Plugs into JBuilder, NetBeans, and Sun ONE studio or standalone
Pricing: Enterprise $1,999; Professional $499 (no pattern support)
Target Audience: J2EE developers
Level: Beginner to advanced