
An Inside Look at the Latest, Greatest Java Application Development Environments.
Java has certainly taken the development world by storm, driving the development tool industry to create new sets of tools and add-ons to cash in on Javamania. Today the number of Java development tools outnumbers the available C++ development environments. They now provide sophisticated features as well, such as visual development, code generation, database connectivity, and advanced debuggers and testing environments.
The number and quality of tools increase each month; however, developers are finding that identifying the right tool for their Internet or Intranet development project is an arduous task. In this article, I examine the engine that's driving the majority of these tools -- the JDK -- and how each tool vendor is approaching Java development.
Today applets perform other duties, too: In many instances they may link back to a database server using new Java APIs such as JDBC, or applets may communicate with other applets using Java's Remote Method Invocation (RMI). Both APIs are included with the current Java Developer's Kit (JDK 1.1).
But we've gone a bit further. Where Java is the preferred development platform for client-side Web development, many developers are now turning to Java for server-side development as well. Using new APIs such as Java's Server APIs to provide a set of server-side class libraries, developers can create links with client-side applets and invoke HTTP server functions. Java has become a complex but robust language, and the tools are following suit.
What's more, Java is also finding a place in the native environments. Developers are using Java to build applications, Java programs that run in the native operating environments (Windows 95 or OS/2) and outside of the restrictions of browsers. These applications could be the largest growth area for Java development by the time 1997 comes to a close.
JDK 1.1, the latest release, provides the Java infrastructure. The new JDK includes a production release of JavaBeans, JDBC, and other new APIs. (See my article "The Java API" in the April 1997 issue of Internet Systems.) The idea is to build in the base functionality of the Java architecture, providing the developer with features that are native to the JDK, and not a particular tool (see www.javasoft.com/products/jdk/1.1/docs/relnotes/features.html for more details). JavaSoft is leveraging many of its strategic relationships with other organizations that are willing to provide value to Java and thus provide value to the tools that use the JDK. Those familiar with the 1.0.2 release of the JDK will notice a host of new features in version 1.1. Clearly, JavaSoft plans to take Java from simple Web-based applications to enterprise-class applications.
From the interface, the Java developer can add behavior to the GUI control by writing code. In most cases this is Java code, but some tools provide an easier-to-use scripting language that's able to translate itself to Java (see my discussion of Java generation later in this article). The code editor gives you a means of adding and checking code before submitting it to the bytecode compiler. Typically, the code editor will automatically spot syntax errors and provide online context-sensitive help. For instance, highlighting a command and then pressing F1 will bring up a window explaining the correct use of that command as well as providing sample code.
The object browser enables you to graphically depict the hierarchy, including the base Java classes that come with the JDK and the new classes created for the application or applet. You should be able to view properties of an object, including methods and data. You should also be able to snap directly into the code editor or interface painter from the object browser.
The test environment lets you see how the application works as an applet embedded in HTML running under a browser or as an application running in the native environment. Because Java is a bytecode-interpreted language, there are no long compile times.
The debugger should be one of the most robust and useful components, because most developers spend the majority of their time there. The debugger should let you set breakpoint, watch variables, and monitor the status of objects. Java development tools also let Java developers test applets inside of the target browser and even debug API calls such as JDBC, JavaBeans, and the Commerce API.
The database interface is one of the latest features in Java tools. This feature lets both applets and applications link to popular databases such as Oracle, Sybase, and Informix. The tool vendors are following three approaches to Java database connectivity: middle-tier, add-ons, and JDBC. In the middle-tier approach, there is a layer between the Java applet and the database. For instance, Visual Café Pro bundles DB Anywhere to handle database connectivity for Café. The applet or application communicates with the middle tier, and the middle tier handles the communications with the database. MoJo uses a similar architecture. The add-on approach means that the developer employs a JDBC solution such as XDB Systems Inc.'s (Columbia, Md.) Jet Connect. Jet Connect is a set of native Java classes (similar to JDBC drivers) that provides a native interface to most relational databases. JDBC, built into the Java API set, provides native applet-to-database connectivity. Thus products such as MoJo and most other Java development tools have rallied around JDBC as the best way to provide database connectivity for Java.
Java development tools must provide a build-and-deploy mechanism. Most tool vendors, such as Symantec Corp. and Borland International Inc. (Scotts Valley, Calif.), have added performance features such as just-in-time compilers. This feature passes the calls directly down the native processor, bypassing the overhead of the interpreter. Other new features include source code, release control, and the ability to link the applet with content on a Web server. Java tools should also support project-management facilities, allowing the developer to group source code (such as HTML and Java code) into projects.
Visual Café and Visual Café Pro, now in version 1.5.1, are the most popular of the pure Java development environments. Visual Café enables developers to create applets and embed them in Web pages on Intranets or the Internet. Visual Café Pro adds database connectivity features. The entire release version of the JDK is provided with Café, including source, classes, and samples. Visual Café uses version 1.0.2 of the JDK. Visual Café gives you a drag-and-drop visual form and dialog designer that is able to generate Java code. There is a custom bytecode compiler and GUI debugger. For those of you looking for a quick start, AppExpress is a built-in wizard for creating basic applications so you don't have to start from scratch. Café also provides a class editor for viewing and editing objects and a source editor with Java syntax highlighting. A project management feature keeps track of source files grouped into a project, and there is also a just-in-time compiler that is able to provide better execution speed.
MoJo from Penumbra Software, like Visual Café, comes in two flavors: MoJo 2.0 and MoJo Enterprise. MoJo is another tool providing RAD-like capabilities for Java, with complete access to the native features of Java. MoJo provides a GUI designer (MoJo Designer) and a low-level coder that update each other automatically as the developer modifies an application or applets. MoJo Enterprise is basically MoJo 2.0 with database-access capabilities built in. MoJo Enterprise provides database connections through an encapsulated JDBC interface. However, MoJo uses a three-tier data-access mechanism, going to a middle tier before going to the database. This means that MoJo is creating applets and applications that connect to a piece of software running on the Web server. This piece of software in turn connects to a database on behalf of the client. This is the same type of mechanism employed in Visual Café Pro.
Borland C++ 5.0 Developer's Suite is the best example of a hybrid development environment. Borland C++ supports Java by providing developers with a set of Java tools integrated with the C++ development IDE. This lets developers work with either Java or C++ from the same environment, submitting code to Java or C++ compilers. However, Borland's Java strategy is becoming better defined. Borland just released a new Delphi-like C++ development environment called C++ Builder, which is supposed to provide developers with an advanced C++ development environment, and JBuilder, which is supposed to handle Java development. (At press time, JBuilder was due to ship in the third quarter of 1997.) Both tools use the same visual development paradigm and should give Borland developers a reasonable set of products, if Borland's track record is any indication.
The same concept applies to client/server development tools, including Powersoft's (a subsidiary of Sybase Inc., Concord, Mass.) Optima++. Optima++ is a visual C++ development environment with built-in database connectivity using the data window paradigm that Optima++ borrowed from PowerBuilder, its sister product. Optima++ will (when it is offered by Powersoft later this year) enable developers to create Java applications as easily as C++ applications.
Visual J++ from Microsoft would be in the pure Java category, if not for Microsoft's integration of ActiveX development with the tool. (See Figure 2.) Although many view this feature as confusing, Visual J++ provides an advanced development environment that's typical of Microsoft, including a set of wizards for creating applets or applications. Visual J++ is also not a contender as a pure Java tool, because Microsoft has Java going in a slightly different direction from the other tools. Microsoft will provide its own value-added at the virtual machine level.
However, the release of JDK 1.1 is causing some interoperability issues between JavaSoft and Microsoft. Microsoft contends that the JDK 1.1 is violating a very specific contractual obligation. The issue causing the contention is a small portion of the Java Virtual Machine that handles the interface between Java and the operating system. According to Microsoft, JavaSoft changed the underlying design of the interface, morphing it into a Java Native Interface (JNI). The JNI is not compatible with the previous native interfaces of the earlier releases of the JDK (called the Native Method Interface [NMI]). Microsoft built its own JVM for Windows and built the native interface using the NMI, and thus it is not compatible with the JNI. JavaSoft and Microsoft may play out this dispute in court.
Unify Corp.'s (Sacramento, Calif.) VISION/Web is a good example of a Java generation tool. VISION/Web provides automated Java code generation to support Intranet and Internet applications. Thus Unify developers can use the same development environment and 4GL within VISION to create a multiplatform client/ server application, then automatically deploy that application to the Web by generating the Java code. The value of products such as VISION/Web is their ability to leverage existing applications and developer talent. However, the Java code generated is difficult, if not impossible, to maintain with another Java tool, so you're locked into one tool vendor. What's more, you'll pay dearly for these features: These tools cost 10 times what most pure Java tools cost.
What new and existing Java developers should look for in a Java development tool is support for JDK features, ease of use, and value-added features. The Java tool should faithfully support the amenities of the JDK, including JDBC, JavaBeans, and the Server API. (For more information on JavaBeans, see Dan Rahmel's article on page S9.) Although most tools don't support all of the JDK 1.1 features now (it had just been released at press time), they should do so in a month or two. The use of the JDK also ensures that your tool vendors won't go off in their own proprietary directions, leaving Java behind and you stuck holding applets and applications that you can't move to other tools. Although ease of use is relative, the tool should give you a productive development environment that, at a minimum, provides an object browser, code editor, debugger, and testing facility. Finally, look for additional features that you may need in your applications, including database connectivity and links to code-control systems, repositories, and CASE tools.
Things are changing quickly in the world of Java. Three months is a Java year, and the whole ActiveX vs. Java debate still needs resolving. The tools, however, have gone through a great deal of maturation in just the last few months and are ready for enterprise applications.

