Internet Systems

Building in JAVA

By David S. Linthicum
Internet Systems, May 1997

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.

Architectures

In the beginning, the Java architecture was simple. Developers built applets and embedded them within HTML, and the applets were then delivered and executed on the Web client. The Java Virtual Machine is responsible for executing the bytecode of the applet within the browser and dealing with the native operating environment. This additional layer between the bytecode and the native environment keeps Java platform-independent.

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 heart of most Java development tools is JavaSoft's (a division of Sun Microsystems Inc., Mountain View, Calif.) JDK. The JDK provides a minimal set of tools and documentation for creating applets and applications. The JDK comes with a few essentials including a compiler, the Java Applet Viewer, and a simplistic debugger. The JDK is the engine that drives most Java development tools. Java development tool vendors build a Java tool by adding features on top of the existing JDK.

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.

Features in Common

Because most of the tools use similar infrastructures, it really boils down to features such as the integrated development environment, GUI painter, project management, code editor, object browser, test environment, deployment mechanism, database interface, and the all-important debugger. Most tools approach Java development visually, meaning that they let you design the interface using traditional GUI painters. This facilitates quick development and removes the developer from the complexities of building a Java applet or application interface. Symantec Corp.'s (Cupertino, Calif.) Visual Café Pro, for example, provides its developers with an advanced GUI painter. (See Figure 1.) So do Microsoft Corp.'s (Redmond, Wash.) Visual J++ and MoJo from Penumbra Software Inc. (Norcross, Ga.).

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.

Tool Types

As Java tools enter their second year, a few categories of tools seem to be emerging: pure Java tools, hybrids, and Java generation tools. Some tools may fit into more than one category, and one or two may fit none.

Pure Java

Pure Java tools are the most prevalent and the most popular. These tools layer on top of the JDK, providing value such as visual development, advanced debugging, and database connectivity. Most of these tools cost around $100, making them one of the best bargains in the development business. Examples of Pure Java development tools include Symantec's Visual Café and Visual Café Pro, Rogue Wave Software Inc.'s (Corvallis, Ore.) JFactory, MoJo from Penumbra Software, Java Workshop from SunSoft, Parts for Java from ParcPlace-Digitalk Inc. (Sunnyvale, Calif.), and JDesignerPro from BulletProof Corp. (Los Gatos, Calif.) -- to name just a few of the most popular. (There is a more comprehensive list of Java development tools and add-ons in the product chart on page S14.)

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.

Hybrids

Hybrid Java development tools are able to create types of applications other than Java applets and applications. In most cases, these are existing client/server or general-purpose development environments retrofitted for Java. The advantage of using hybrid Java development environments is the ability to switch back and forth between native and Java applications. Hybrid tools even let you mix Java with a native application. The downside is one of complexity: You must be on your toes to ensure that mixing code does not lead to application integrity problems. There is an opportunity to make a lot of mistakes.

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.

Java Generation

The last category -- Java generation -- includes those few tools that let developers build an application using a traditional client/server development environment and 4GL, then automatically generate the Java code. You need not know how to program in Java -- you don't even have to know that Java is the way that the application is being deployed to the Web. This growing category of Java tools attempts to capture the large market of developers who don't want to cross-train in Java or who find the Java language too complex. These tools also provide built-in database connectivity.

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.

Now What?

Clearly Java is the solution for most organizations looking to migrate to the Web, either via Intranets or the Internet. Java as a language is maturing into a full-blown, general-purpose application development language with a rich set of APIs that add a tremendous amount of value to the new technology.

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.


David S. Linthicum is a widely published author, speaker, and senior manager with AT&T Solutions Systems Integration Practice in Chantilly, Virginia. You can email David at linthicum@worldnet.att.net.


Figure 1.


--Symantec Visual Café Pro gives developers an advanced GUI painter and database connectivity.

Figure 2.


--Visual J++ from Microsoft would be in the pure Java category, if not for Microsoft's integration of ActiveX development with the tools.

Subscribe to DBMS and Internet Systems -- It's free for qualified readers in the United States
May 1997 Internet Systems Table of Contents | Other Contents | Article Index | Search | Site Index | Home

DBMS and Internet Systems (http://www.dbmsmag.com)
Copyright © 1997 Miller Freeman, Inc. ALL RIGHTS RESERVED
Redistribution without permission is prohibited.
Please send questions or comments to dbms@mfi.com
Updated Monday, April 14, 1997