Since Java's explosion into the marketplace, we've seen a flood of development tools, wizards and environments. The heavy hitters in this area seem to be Symantec and Microsoft, with Café taking the visual approach to development and Microsoft's Visual J++ continuing Microsoft's terrifically successful line of Development Studio products.
Most of us have seen either or both of these products and might be wondering, "Is there nothing more?" Actually, there are quite a few Java IDE Davids rising up to meet these Goliaths. In particular, due to the Internet-oriented nature of Java, there is a growing genre of IDEs known as Multimedia Development Environments. These MDEs take the Visual Basic approach to development, seeking to abstract the actual Java code to a drag and drop level. In a code-oriented environment, writing a simple applet to display a slide show can take around an hour. These MDEs take simple multimedia-oriented tasks such as displaying images or playing sounds and provide a simple interface to their actions and properties.
As happens so often in this business, one of these Davids has actually been gobbled up by a Goliath in the past few months. Dimension X, the creator of Liquid Motion Pro, was purchased by Microsoft in May. So, my big guy versus little guy analogy may suffer, but nonetheless, Liquid Motion Pro is still worth talking about. Liquid Motion Pro is the purest' of these MDEs with almost no indication that you are creating a Java program whatsoever. The environment is a simple multipane with an oversized toolbox on the left side of the layout window. In this toolbox are nine tools or objects. Three of these are actual objects to be inserted into the project, one is to import an existing scene and the remaining objects allow the user to define motion behavior of other objects. The objects are the typical multimedia objects, image, sound and text. Once inserted, a properties dialog appears, asking for file locations, sizing information, i.e., standard stuff.
Once the objects are in place and their properties properly populated, motion can be added to the objects by selecting one of three of the other toolbox objects. Each of these options defines a different kind of motion for the object, moving either from point to point, from line to line or smoothly along a path known as a spline. After defining the general path with these selections, the user can add random behavior to enliven' the motion with Jumps and Wanders. Meaning exactly what they sound like, a Jump moves the object to a random (within preferences) point on the applet; a Wander makes the object meander around its general area.
Sound and events are handled through a Trigger object. With this trigger object, you can specify the event that fires the trigger, as well as the object that will receive the trigger's action. In the receiving object's properties, the user can then set the execution of the object to occur on the trigger's firing. So, to make an image map that plays different sounds when different areas are clicked, a user would place an Image object on the canvas and then place a Sound object and Trigger object for each different area he wished to respond. If the user wished to make a navigation bar, he would simply add the final object in the Toolbox, the URL object. Upon the trigger's firing, a message is sent to the frame specified in the URL options to navigate to the URL in the URL options.
Liquid Motion Pro has a tight focus; it's not designed to create advanced or even intermediate non-animation applets. It is designed, as it says in the press release, for highly interactive 2D Java animations. In this capacity, it is competent, though some seemingly obvious features like an AU to WAV converter would have been nice. Overall, if you find yourself doing a lot of what I call "follow the bouncing ball" or spline-based animations, Liquid Motion Pro is a terrific tool. But, if you're looking for anything else, you'd be better served by another tool. One nice thing about LMP, however, is that there is actually a version of this tool for Mac users! It's nice to see that somebody still realizes that there are some developers who use Macs.
An evaluation version of Liquid Motion Pro is available for download at http://www.microsoft.com/dimensionx/lm/download/.
Liquid Motion Pro
Next on the docket is AimTech's Jamba. The version we reviewed was beta 2.0.33, so there were a few squeaks and grinding noises here and there, but overall, it appears to be in its final form. Jamba provides a design environment similar in form to Microsoft's Visual Basic development environment. This is good news because, having been designed by UI guru Alan Cooper, VB's user interface is no slouch. Upon launch, Jamba presents you with the choice of launching a new blank project or executing a Jamba wizard, á la Macromedia's Applet Ace. These wizards are useful for creating the standards of Web applets, such as banners, image maps and rules. Once into a blank project, the user is presented with a blank workspace, called a 'Page' in Jamba parlance. Working with this blank page, the user selects objects from a detachable toolbox and then draws them onto the page. It is in the toolbox particularly that the similarity to Visual Basic is so striking; in several cases, the icons for corresponding objects match exactly. This goes a long way towards making old VB'ers like me comfortable with a new interface.
Once you've selected your objects, a right click on an object yields a dialog window with four main options: Properties, To Do List, Variables and Notes. The Properties window contains simple descriptors like BackgroundColor, Enabled and so on. The To Do List contains a dropdown with the events of the object. After selecting an event from the list, you can then select the object or variable that you want to modify and specify the value. The next window, Variables, allows you to create variables that are not bound to any particular object. The final window is a notes window, allowing you to record comments about different topics as you move through the project.
Jamba provides terrific support for integration with other Internet technologies. Using e-mail, FTP and CGI controls is as simple as any other control. Keeping the Java sandbox in mind, it's easy to write some impressive embedded Internet applications within an applet. Additionally, Jamba provides a built-in AU to WAV converter. Because Java supports only AU format sound files at this point, this comes in handy.
Using this interface, I was able to fire up the program for the first time and create a working e-mail applet in about five minutes. I found Jamba's interface to have a terrific balance of full abstraction to minimal abstraction. What I mean by that is summarized by Einstein's philosophy, "Make things as simple as possible, but no simpler." When Jamba leaves beta, I'll probably pick up a copy. An evaluation version is available at http://www.jamba.com.
The last of these comes from one of the big companies in the CAD and graphics design market, Kinetix. Hyperwire, their Java MDE, leverages their experience in large-scale application development along with a sense of style in its user interface. Hyperwire is laid out not too dissimilarly to 3D Studio Max, with a multipaned environment with dockable toolbars. By clicking on a toolbar on the right side of the screen (by default), you can select the type of programming object you wish to include in your applet. Depending on the needs of the object, you can specify height and width by simply drawing the object to your specifications. Once placed on the 'canvas', you can further modify the properties of the element through a properties window that can be accessed anytime with a right click from the mouse. Once you've positioned your objects and specified your properties, the really cool idea behind Hyperwire comes into play. In Hyperwire, there are two main windows: one where the visual elements, such as layout, background images and captions are managed; the other where the programmatic elements are managed. In this second window, an icon displays each program element, with two symbols at the bottom of each element. These symbols represent Inputs and Outputs respectively. Inputs correspond roughly to methods or property changes in an object, while Outputs correspond roughly to events. By connecting one object's outputs to another's inputs, we can achieve a fairly sophisticated level of development with little effort.
In addition to a first class drag and drop development concept, Hyperwire provides some useful tools in managing multimedia. My favorite of these is its management of image arrays. An image array is simply a way of breaking up one image into a number of sub-images. This is useful in creating objects like toolbars. By taking the static toolbar image, pasting it and then modifying it, creating a number of different visual states is a snap. Kinetix has also wisely provided some support for its other file formats. With two plug-ins, developers can embed AutoCad or 3D Studio Max files, with some of the abilities of each program. The 3DSMax plug-in is particularly useful due to 3D Studio's ability to interface with VRML, giving the applet virtual reality capabilities. In one of the examples included with Hyperwire, an AutoCad design of a camera is displayed interactively in a Java applet; in another, a virtual reality theater is used for purchasing tickets. All in all, for straightforward multimedia development, Hyperwire is a fun and fairly easy to use MDE. An evaluation version is available for download at Kinetix's home page, http://www.ktx.com.
Kinetix Hyperwire Applet Viewer
In closing, let me say that all three of these tools are good at what they do. If I had to put my finger on a weak area crossing product lines, though, I would have to say that as a developer I would like some capability to dive down into the raw code at certain points. Hyperwire and Jamba at least provide truly generated code, but at least a rudimentary text editor would be nice to have integrated into the products. Despite the obviously high-level nature of these development environments, I would like a little ability to get down and dirty with the code. Nevertheless, if you are finding yourself coding Java slide shows or image maps by hand, I would definitely check out these tools.
About the Author
Chris Behrens is a technical writer and Web Developer. He is a contributing author to the "JavaBeans Handbook" (McGraw-Hill) and is a Microsoft Most Valued Professional. Chris may be reached at [email protected]