Which Java visual development environment is best for you?

Read this comparative review of 5 top tools so you can quickly pick the one that best meets your needs -- and avoid wasting your precious time with the others

1 2 3 4 Page 2
Page 2 of 4

By the time this article comes out, Asymetrix is scheduled to have released SuperCede Java ActiveX Edition and a version with database support. The company also plans to offer a Visual Basic-to-Java converter. Most Visual Basic programmers depend on a lot of functionality in existing binary objects in the form of ActiveX, VBX, OCX, or OLE controls. Simply converting the Basic to Java won't do, because these objects are not necessarily written in Basic, and the source may not be available. If this tool works as promised, fully integrated with ActiveX controls, it is possible that any Visual Basic program could be converted to Java -- although it wouldn't be 100% Pure Java.

Asymetrix also has a free upgrade path to the Java Development Kit (JDK) 1.1 with JavaBeans. This upgrade is scheduled to be available in June, and the company claims that it offers the only free upgrade path to JDK 1.1. See http://www.asymetrix.com/pr/sc_upgrade.html for more information.

SunSoft Java WorkShop 1.0

Click image for expanded view

Java Workshop is shown here in the visual-build mode

along with a Java code editor window. Note how

congested the screen is with only the basic windows

open, which leaves little room for another browser

window and doesn't allow you to easily maneuver

across the various parts of your project.

Approach

Java WorkShop (JWS) comes with the HotJava browser, which is actually a Java program itself, and the entire development environment is centered around the browser. This approach has some pros and some cons. Because the development environment is a browser, applets are easy to build and test because they run right within it; however, the performance is relatively poor in comparison to the other tools discussed in this article. Another downside to the browser approach is that it is not well suited for large project development because the browser has limited view space; you need to scroll the browser window to view all of the project information available.

By using the browser as the interface, JWS is inherently familiar and allows for a consistent way to access commands. For example, you can set the "Action" handlers of a Java control (widget) in the same way that you set the browser properties.

Users of other SunSoft tools (such as those offered for Solaris) will be comfortable with the look-and-feel conventions of JWS. However, being a tool written on a cross-platform foundation, it doesn't take complete advantage of particular platform niceties. This development paradigm is a big switch for Windows developers who are used to the latest tools. Also, although the installation was quick and easy, we did find a bug on the Windows NT 4.0 platform in which it would not add the program to the program group.

Despite being written in Java as a cross-platform tool, JWS is not yet any more portable than most other tools, it currently supports only two platforms: Solaris and Windows. This is because SunSoft had to learn the specific native methods required to implement the debugger for each platform. Also, being written in Java, JWS 1.0 also suffers from JDK 1.02's lack of a print function, and thus you cannot print from within JWS (no printing out code for review, comments, or other markup). But as Java matures (JDK 1.1 supports printing) and becomes more robust (so that the AWT and/or forthcoming JFC include the APIs necessary for the JWS debugger), JWS will likewise become more robust and run on additional platforms, including HP-UX.

JWS is the one of only two tools (Visix Vibe 1.0 being the other) we reviewed that is available on Solaris, and if you are a Solaris user this detail obviously makes all the difference. For reasons we point out in the following subsections, Windows users probably will want to pick another tool, or wait to see how the 2.0 release (currently in pre-beta and expected to ship in August) shakes out.

Editors

The JWS dialog editor, Visual Java, always uses geometry management. You can't just freely drag and drop controls wherever you want; instead, you must explicitly place objects in available cells of a visual form to get it where you want it and then manipulate the containing cells properties to implement the appropriate geometry you require.

We did uncover two very annoying bugs while testing the Visual Java editor, both related to viewing forms in either a "Layout" or "Preview" mode. The first one occurs when changing the visual form from "Layout" to "Preview" mode: The Visual Java window is resized back to the standard opening size. This is very irritating if your dialog is larger than the default window size. The second bug occurs when putting a window object in "Preview" mode: JWS automatically puts the window object in the top-left corner and doesn't give the window focus. This also is irritating because if there is another application in that window space, the window object is instantly hidden -- it isn't brought to the front. Visual Java allows the desktop screen to become cluttered over time because of the numerous dialogs that are spawned throughout the development cycle, and each window wastes a lot of space with oversized controls required to operate the user interface.

Compiler and builder

The JWS byte code Compiler and Builder is the standard for Java compilers. The builder understands project hierarchies maintained by the Portfolio Manager so you can have sub-projects, or projects consisting of other projects. You cannot integrate outside tools into the builder, but in the future SunSoft plans to expose the API of JWS so that you can perform macro-scripting to automate common functions and extend its functionality.

As we mentioned earlier, we originally felt that compile times were not that important in the review of these tools. JWS 1.0 gives us pause to rethink this: It takes about four times longer than the other tools to compile the same source. Fortunately, SunSoft realized this shortcoming and made improving compile time a priority in the upcoming 2.0 release of JWS, due in June. SunSoft reports that the new compiler is up to 15 times faster then the standard Java compiler provided with the JDK.

Debugger

Like Microsoft Visual J++ (VJ++), JWS lets you debug applets within the browser, but because this same browser is used for the applet's parent Web page and the debugger, JWS won't let you display them at the same time and work as interactively as VJ++. This is a major hindrance to the RAD paradigm.

The JWS threads inspector allows you to control or inspect any thread. Unfortunately, you can have only one thread inspector on the screen at a time. Therefore, your ability to display data on more than one thread at one time depends on how much you have to expand the trees to get to what you want.

This debugger, like that of Vibe, does not have conditional breakpoints. If you have a problem that doesn't show up until a certain condition is met (like the thousandth iteration of a loop), you'll need to write a conditional piece of code in your app, recompile, and put a breakpoint in the added code.

Libraries

Coming from the home of Java, you would hope JWS would have the best support for Java. For now, however, like the other tools in this review, JWS is based on JDK 1.02. It looks like we have to wait until at least June before tools start shipping with JDK 1.1.

RAD features

As noted earlier, changes you make in the dialog editor or in an object's attributes take effect immediately. You can filter by event and perform various actions without writing code. For example, you can change a button's "Action Event" to rename a label's text property and it will immediately take effect in the visual builder window.

As a result of being written in Java and running in the browser, JWS runs a little slow and takes up a lot of the screen real estate -- another visual design no-no. If you are editing your code and then decide that you need to make a change to your project, you must switch the browser to the project management section and your code will no longer be displayed. Another example: To rebuild your code after a change, you must go to Build Manager, click the Build button, and then go to the Project Tester. This cumbersome process gets old quick! Also, because the information is so spread out on these screens, you have to keep the browser window rather large.

Documentation/demo/tutorial

The online documentation has some shortcomings: The help doesn't have a search capability; there is no fast lookup of classes or APIs from the editing window; and the documentation on parameters, exceptions, and return values is very sparse. The tutorials also are lacking: Two very simplistic examples (Blink and Calculator) are used to demonstrate building your "first" apps.

Other features

JWS integrates well with configuration management programs like PVCS, SCCS, and RCS. It also comes with a Portfolio Manager that allows sharing of projects or information on your intranet and allows you to organize things in a hierarchy and create sub-projects.

SunSoft's next version of JWS (2.0) is now in Developer's Release and should be ready for final release in June. It is reputed to have a much better tutorial, improved usability, increased robustness, and added features like a profiling tool, a JIT compiler, and conditional breakpoints. JWS ports to MacOS and HP-UX are in progress. Although it is clear that release 2.0 will address many of our concerns, JWS 2.0 will still be missing some of the features of the premiere IDEs (such as Borland's Turbo Pascal and Turbo C/C++) like one-key API lookups and variable watch windows.

Microsoft Visual J++ Professional 1.1

Click image for expanded view

This screen shot shows why Visual J++ isn't well-

suited to RAD. First, it requires too many steps:

You do your graphical editing in the Visual Developer

Studio Resource Editor, then you must run the Resource

Wizard (Aimtech's Jamba) to create the Java code, add

the resulting Java file to your project, and add the code

to hook it into your program. Furthermore, the process is

not two-way (visual objects that you add in the code will

not be reflected in the resource file) and you'll probably

want to code some stuff in, because the Resource Editor

doesn't let you use all of the AWT.

Approach

In the August 1996 issue of JavaWorld, columnist Bill Blundon said VJ++ would be "the de-facto standard for Java developers on Windows." We have found no evidence to refute this statement, though a recent JavaWorld reader survey indicates Symantec's trio (Café, Visual Café, and Visual Café Pro) currently may have more market penetration.

VJ++ has a number of unique features. VJ++'s IDE (Developer's Studio) can support sub-projects, create cabinet (CAB) files (compressed files containing all of the information necessary to download, install, and register the components you control), and create ActiveX components easily (via ActiveX Wizard).

At 9, VJ++ already is at the low end of the pricing for Java tools. Right now, Microsoft offers a 0 rebate for users who upgrade from a competitive product, making the cost of VJ++ about 9. Whether you want to do serious application development with Pure Java or integrate Java with ActiveX, VJ++ fully empowers you.

Editors

In VJ++ version 1.1, Microsoft has integrated its new Visual Studio environment, which it employs in all of its language tools. Visual Studio has powerful editing features and "macro scripting" that you can use to automate tasks and create your own features. VJ++ does not yet have Intellisense, the feature added in version 5 of Visual Basic that recognizes keywords, variables, classes, and class members, anticipating what you are typing. Too bad. This feature would have been killer -- you would almost never need Java API references.

You use the Resource Editor to create your dialogs or other resources, then run the Resource Wizard to create the Java code. The Resource Editor's palette doesn't provide all the AWT classes -- Layout Managers, for example, are conspicuously absent. If you write Java code to do anything on the screen (such as use these missing classes), keep in mind that the Resource Wizard is a one-way process. Resource Wizard just uses the resource file as an input; added Java code doesn't show up in the resource.

VJ++ does not allow you to add Java classes to the palette the way Visual Café does. You can, of course, programmatically use the classes you create. If your code has to run in ActiveX environments only, you have another alternative: You can put your new class into an ActiveX control (using the ActiveX Wizard) and then access it from the Resource Editor. Either way, reuse is more convenient in Visual Café.

Compiler and builder

When Microsoft was in process of creating the Java Compiler and Builder, it tested the component with the early class libraries and code examples available on the Internet. Because many of the people performing these tests were new to Java, they had a hard time finding out whether they were dealing with errors in the Compiler and Builder, or errors in the Java code. Each time Microsoft found something that was actually a code error, they added error messages to the Compiler and Builder to describe how to fix the error. As a result, VJ++ has some of the best diagnostic messages of the tools tested.

Debugger

Only VJ++ can run the debugger in the applet's true context: within the Microsoft Internet Explorer browser. Although Java WorkShop runs within the built-in browser of the IDE, it can not match VJ++s ability to debug Java code while running in a stand-alone production version of one of the top two browsers in the world. With tools that lack this capability, you can't use the debugger to work out most problems -- leaving you only one way to debug an applet within the browser: by using print statements (display messages).

This VJ++ debugger is a first-class program that really knows how to deal with Java byte codes. It is the only product reviewed that can perform byte-code disassembly and byte-code-level stepping and tracing.

Libraries

1 2 3 4 Page 2
Page 2 of 4