Visaj 2
Visaj occupies an odd niche in the world of Java tools. It's not quite an integrated development environment (IDE), and it's not a code editor. Instead, it works in conjunction with an IDE to speed up development of Java projects by streamlining the often-tedious process of creating a user interface. Truly in a league of its own, Visaj does what it does extremely well.
The main application window features a visual Class Editor with point-and-click functionality for adding program components to the Design Tree. The component palette is quite intuitive and easy to use, but it's no thing of beauty. The component icons are crowded into the pane in much the same way as Visio's, and it seems Visaj's designers tried a bit too hard to find visual icon representations for somewhat abstract concepts such as "ResourceBundle" and "FlowLayout." The component menus are collapsible, which is a nice touch, and you can load in additional components (including Swing components), which then become part of the palette. Components that aren't available at any given time are grayed out, reducing the chance of accidentally adding the wrong component.
As you add components to the Design Tree, a dynamic design window provides a continually updated view of how the completed application will look. This feature saves time that you might otherwise waste tweaking and recompiling an application, trying to make it look exactly right.
Java developers often find Java's built-in AWT classes inadequate for good interface design, and Visaj addresses this by providing an additional set of JavaBeans called Diamonds. The Diamonds are a nice set of Beans, with frequently used tools such as status bars, knobs, and sliders available in a lightweight, easily reusable format.
Event bindings are also handled in a visual format, with an Event Binding Editor that shows all the components in your design and the methods that can be used to allow them to communicate. I found the Event Binding Editor to be one of the strongest aspects of Visaj. Event binding between objects in a Java application is often a slippery, error-prone operation, but the Event Binding Editor made the process totally clear and easily manageable.
Visaj doesn't come with its own compiler, so once your application is ready to run you'll need to compile it with an IDE. The Java Developer's Kit (JDK), freely downloadable from Sun, works fine for this, although you could use any payware IDE, such as Sun's Java Workshop or Symantec Cafe. Visaj generates Java code from your Design Tree that you can edit with any text editor. You must do this if you want to make any modifications by hand because Visaj doesn't include a text editor. The code that Visaj generates is quite clean, nicely indented and commented, and ready to become part of a larger project.
Visaj is a 100% Java application, and a remarkably stable one at that. I left the application window open for several days during my tests, and it suffered no memory leakage. When I loaded up the Design Tree window with several screens full of icons, the window scrolling slowed, but only slightly. I did find an odd quirk on the File menu; when I clicked on Close, I expected only the open project to close. Instead, the entire application closed. A Revert to last saved feature would be nice here, as well. The only way to discard changes is to close the application without saving and re-open the project.
A complete novice could sit down with Visaj and in a matter of minutes produce a working applet. It wouldn't do anything useful, of course, but it's still a compelling demonstration of Visaj's benign learning curve. More-advanced Java coders should find Visaj to be a powerful tool that can shave hours off of application development time. The evaluation version is freely available and well worth a look.
Steve Renaker is a Web developer with Razorfish Inc. in San Francisco, and has been fiddling with the Web since its earliest days. Steve is the resident Perl/CGI guru at Developer.com, and has published articles with Java Report magazine and Fawcette Technical Publications. He can be reached at srenaker@razorfish.com.