ELECTRONIC DESIGN - July 20, 1998 - New Development Tools Keep Java Percolating

Return to July 20, 1998 table of contents

Tech Insights
Exploring advances in software development tools

New Development Tools Keep Java Percolating

Code Generation Is Getting Easier Thanks To A Plethora Of Discrete Tools And Integrated Development Environments.

Ralph Spindell

With the right tools, Java could replace C++ or Visual Basic as IT professionals' development language of choice. In a nutshell, Java development needs to become faster, better, easier, and cheaper. And tool vendors are trying to make that happen. There are over 360 tools available for serious, professional Java development. In addition, the language specification and core-application programming interfaces (APIs) are maturing. So, fire up the Integrated Development Environment of your choice, load up your toolkit, and give Java a spin.


Art Courtesy: Oracle Corp.

To write professional-quality Java code, the serious developer relies on a burgeoning set of Java development tools. Even at this early stage in the Java language's life-cycle, a broad range of development tools and aids are currently available. Many third-generation and high-level development tools have been available for other, more mature languages, such as C++. Now, they are reaching into the Java sector. Java's unique approach to object-oriented programming, and its promise of a write-once, run-anywhere, virtual-machine architecture, has created a need for a new class of Java code-development tools.

While the default Java API offers a rich set of classes, Java development-tool suppliers are filling the gaps in performance, security and third-party libraries for electronic commerce, business objects, and other needs. Also, Java's small-size bytecode portability makes it ideal for the embedded and real-time systems markets. This is spawning a series of Java tools specifically for embedded-systems design. This article, however, focuses on tools for traditional Java applications.

Tool categories range from the discrete to the complete. Discrete tools focus on a specific area of Java development, such as debuggers, class browsers, testing and quality-assurance tools, profilers, and porting tools.

There's also installation and distribution, database connectivity, client/server, thin-client, and server-side development tools, as well as embedded-systems tools, class libraries, component "Bean" libraries, and graphical-user-interface (GUI) toolkits. Most discrete tools are available in the more comprehensive development suites.

Complete suites of tools are also available: Integrated Development Environments (IDEs) and Workbenches, third-generation Rapid Application Development (RAD) visual design and authoring tools, and CASE tools that support or generate Java code. Other tools for developing Java code include preparsers, code and version management, documentation tools, and just-in-time compilers. With the advent of JavaBeans--a component-based architecture--comes tools for Rapid Application Development. RAD tools let you use premade components, which can be connected or wired together using a visual programming method.

Definitions of various categories of development tools follow, as well as capsule descriptions of some products available within each category. Authoring tools and applet-generation tools, geared towards the non-developer, are not discussed in this article.

Integrated Development Environments: You'll probably write your first simple "Hello World" application using a text editor and the Java Development Kit's command line compiler and AppletViewer. After that, you will almost certainly want to use a comprehensive Integrated Development Environment or Workbench.

An IDE provides a comprehensive set of development tools for code editing, visual layout of components, compiling, interactive debugging, searching and browsing--all in one package. Some IDEs also provide internal project management or more comprehensive source-code and version control. IDEs also tend to fall into two main classes: file-based IDEs, which store your project in standard system files, and repository-based, where all code is stored in specialized databases. Repository-based IDEs tend to have an advantage in team programming environments, as the repository methodology assists in sharing and maintenance for both codes and objects.

There are dozens of IDEs. Many of those are available from major players, such as Sun's Java Studio and Java WorkShop products, Symantec's Visual Café Pro, Silicon Graphics' Cosmo Code 2.5, Asymetrix's SuperCede, and Microsoft Visual J++.

Sun's Java WorkShop includes support for the latest JDK 1.1 and JFC 1.1 "Swing" components, a fast compiler, and a just-in-time compiler built into the Java Virtual Machine. A new profiler is included for identifying bottlenecks. And, a powerful, flexible debugger with remote capability permits you to debug from anywhere on the network. There's also JavaBean support for creating, importing, and reusing components, as well as a visual Java GUI builder. In addition, there's ObjectStore, a Java object persistent-storage engine (PSE) for developing Java database applications which are portable over the network. You also get MindQ's interactive tutorial on JavaBeans and Java WorkShop.

http://www.sun.com/workshop/java

IBM VisualAge for Java is a repository-based IDE. Its unique design provides a highly dynamic development environment. VisualAge keeps everything compiled all the time, and maintains a list of unresolved inconsistencies. You can run any class, or execute arbitrary code fragments, in the scrapbook window. There is no distinction between running, debugging, and editing code while debugging. The repository-based storage system allows for robust version control/change management and team collaboration. Enterprise Access Builders eliminates programming database-dependent embedded SQL in the application. It also generates Bean components and middleware code that connect the Java client to existing transaction, data, and application servers.

http://www.software.ibm.com/ad/vajava

Asymetrix SuperCede is a high- performance IDE with complete support for JDK 1.1 and JavaBeans. SuperCede offers a high level of dynamic operation through its interactive Flash Compiler. This compiler lets you instantly see the effect of changing or adding new code to your application--while it runs. The RAD debugger includes innovative features, like the ability to interactively test new source-code fragments and expressions. By associating a series of legal Java statements with a tracepoint, ActionPoints permit you to easily debug complete problems. With the BackTrack feature, you can fix a problem in the current method, backtrack to before the method was called, and retry the modified method. The Data Browser allows you to connect to and browse legacy databases, as well as drag and drop tables and columns into the form editor. Java Data Objects provides a complete object-oriented interface to JDBC. http://www.supercede.com

Created by Silicon Graphics, Cosmo Code 2.5 is a third-generation tool comprised of an integrated set of powerful and highly visual tools for creating Java applications, applets, and classes. Cosmo supports the entire development cycle: designing, debugging, and delivering. It comes with AWT 1.1-compliant class libraries from Rogue Wave, one of the leaders in object-oriented components, as well as JTools, JWidgets, JChart, and JDBTools. The product generates JDK 1.1-compliant code for applications, JDK code 1.0 when the target environment is a browser. It even generates 1.1 objects with the 1.0 event model. There's also a very-comprehensive static-analysis tool and class browser, graphical debugger, and project-management features.

http://www.cosmo.sgi.com

Symantec's Visual Café Professional is a very popular RAD IDE that supports JDK 1.1.5, JavaBeans and JFC (Java Foundation Classes, Sun's GUI toolkit). Along with a JavaBean Editor, it has an Interaction Editor, which minimizes the coding needed to develop JavaBeans and wire them together. Another feature is an open API. Visual Café sports the fastest just-in-time compiler for Java. The Database Development Edition adds support for over 30 databases through JDBC and ODBC, and includes dbANYWHERE, a 100% JDBC-compatible middleware server with native drivers for Oracle, Sybase, SQL Server, Access, and JDBC/ODBC. http://www.symantec.com/

Visual J++ 6.0 from Microsoft provides productivity features such as a fast Java compiler, debugger, GIF/JPG editor, macro scripting, and a post-build process for packaging. Its very Windows-centric approach supports ActiveX, and allows Java developers to build and deploy high-performance, data-driven client/server solutions for the Windows operating system and the Web. It supports the Windows Foundation Classes (WFC), an object-oriented framework designed to provide easy access to the full power of the Windows platform. WFC lets developers build high-performance, native Windows-based applications using the Java programming language. Visual J++ provides complete access to the native Windows Win32 API through J/Direct API architecture. http://www.microsoft.com/visualj

JBuilder from Borland International features JavaBeans component creation, a scalable database architecture, visual "Two-Way" development tools. It also produces "100% Pure Java" platform-independent applications, applets, servlets, and JavaBeans. The product's open environment supports JDK 1.1.x, JDK 1.2, JFC/Swing components, JavaBeans, Enterprise JavaBeans, CORBA, RMI, JDBC, and all major corporate database servers. It also includes Mocha and Crema--a decompiler and its companion obfuscator. Their Client/server Suite comes with VisiBroker for Java, which is Borlands CORBA technology. Included are over 200 JavaBean components ,with source code and tools for creating and managing JavaBeans. Note: Borland has changed its name to InPrise.

http://www.inprise.com/jbuilder

Oracle's JDeveloper Suite 2.0 lets you use Java to build server-based solutions. JDeveloper Suite includes AppBuilder for Java, Oracle Application Server 4.0, OracleData Server, and Symantec's Visual Page HTML editor. With a broad range of database connectivity options, AppBuilder's IDE is well-suited for building sophisticated, enterprise-class database applications. Oracle plans to support Java on all three tiers of the network computing platform.

With AppBuilder's integrated SQLJ--a pre-compiler for embedding SQL directly in Java source code--developers can create reusable JCORBA cartridges. These components contain business logic written in Java. They are accessed through an embedded CORBA 2.0-compliant ORB for deployment on the Oracle Application Server. Future support for Enterprise JavaBeans is planned.

http://www.oracle.com/products/tools/jdeveloper

PowerJ, from Sybase, is an enterprise application-development environment for business applications, in a multitier distributed-computing environment. If you're new to Java, features like the Reference Card and Parameter wizards assist your learning curve with drag-and-drop programming methods. There's complete support for JavaBeans, ActiveX, and CORBA. A set of data-aware components can be used with any JDBC source to create enterprise database applications. PowerJ includes Sybase SQL Anywhere, a middleware application server, and jConnect, Sybase's JDBC driver. PowerJ has a high level of integration with Powersoft Jaguar CTS, a component transaction server, and Sybase Dynamo, a dynamic data-driven web server. http://www.sybase.com

Optimization, Testing, and Debugging Tools: Thorough testing, debugging, and optimization of Java applications will increase reliability, performance, and quality. Standard testing requires writing a script which plays out on the GUI of your application--supplying program control and data from a user's perspective. This usually requires a separate testing tool and script on each target platform you are developing for, as GUIs would be different on each. Java testing tools, however, have a leg up. Java utilizes a single code base among all platforms and delivers events directly to the Java Virtual Machine. This bypasses the GUI, eliminating the difficulties to automated testing posed by different GUI controls on different platforms, and "stretchable" GUI components. Optimization tools look for performance problems and bottlenecks in your code by profiling your applications performance and resource utilization.

JavaStar, from Sun Microsystems, was the world's first tool to test at the language level. It automatically records user actions and generates test scripts in pure Java. The scripts can be edited in your standard IDE, and work across all platforms. JavaStar also provides comparison testing among platforms, and regression testing among versions of your software. http://www.sun.com/suntest/JavaStar

Reliable Software Technologies offers a set of practical, early-life-cycle testing tools for developers and testers to identify and remove bugs at the earliest stages of development. The set includes DeepCover, a test-coverage tool that reveals how well your code is tested. Another tool, called TotalMetric, captures and displays traditional complexity/effort and advanced object-oriented metrics. AssertMate, a code-assertion system for Java, supports data assertions, pre- and post-conditions, and invariants to validate code correctness. http://www.rstcorp.com

OptimizeIt 2.0, from Intuitive Systems, is a comprehensive Java profiling tool. It permits developers to track performance issues in Java programs. You can determine how your application uses memory and CPU resources, as well as detect excessive object allocations and time-consuming algorithms. http://www.optimizeit.com

Mercury Interactive Corp. provides WinRunner and Xrunner for functional testing of Java clients. LoadRunner load-tests Java-based systems, and TestDirector manages testing of Java-based applications. http://www.merc-int.com

Jtest, from ParaSoft Corp., is an excellent Java debugging tool which can even locate uncaught run-time exceptions. http://www.parasoft.com/jtest

Numega DevPartner, for Java's SmartDebugging tools, helps you deliver fast, reliable Java applications and components. Available from Compuware Numega, it includes Jcheck for automatic error detection and diagnosis, and TrueTime for automatic performance analysis and optimization. Jheck's unique EventDebugging technology captures system and runtime events for detailed analysis, and has advanced thread monitoring and debugging capabilities. http://www.numega.com

Installation and Distribution Tools: Installing your Java application onto target platforms can be pretty difficult. Problems arise because each target operating system has different methods for invoking application programs; a Java Virtual Machine may or may not already exist on the target platform; and, if it doesn't exist, it will need to be installed.

InstallAnywhere 2, from Zero G Software, is an authoring tool for distributing Java software and creating installation scripts. The tool creates a universal multiplatform installer that runs on any system. It also installs the Java Virtual Machine run-time environment, if needed, on the target system. Icons, shortcuts, or shell scripts are installed, if appropriate, on the target platform to launch your application. A unique Web Install feature allows installations directly from the Internet. http://www.zerog.com

Marimba's Castanet is an infrastructure that enables the automatic distribution and management of applications and content over the Internet. These items include Java applications, Java applets, JavaBeans, web pages, and other types of content. To use Castanet, your target platform must have the Castanet Tuner installed. And, you need to be running a Castanet server to deliver your applications or content. http://www.marimba.com/products

Porting and Code-Translation Tools: Porting tools generate Java bytecode from other languages. This allows a developer to leverage his existing codebase and experiences in another language, such as C++ or Visual Basic. Translating code can also act like a bridge to learning Java development. After conversion, you can read the generated source code and see how your algorithms and classes look in Java. This can assist your learning curve.

Applet Designer Enterprise 1.7, from TvObjects, is an add-in component for Visual Basic that converts entire Visual Basic projects to Java.

http://www.tvobjects.com/products/enterprise.html

C2J is a basic freeware C++ to Java translator, available courtesy of Chris Laffra of the IBM T.J. Watson Research Center, Yorktown Heights, N.Y. http://members.aol.com/laffra/c2j.html

Delphi2Java Database Edition, from PowerBBS Computing, converts your Delphi code into Java applets or applications. http://www.javadelphi.com/db.htm

Decompilers and Obfuscators: Decompilers take a compiled .class file and try to reconstruct the original Java- compatible source-code file for the class (.java files). This comes in handy, for instance, when you've lost the source code for your own project, but have the binary compiled files. It can also be used, however, to reverse engineer another developer's class files to determine trade-secret algorithms, or to assist in software piracy. To protect your code from decompilation, another tool, called an obfuscator, can remove certain symbols from your class files and replace them with fake information intended to confuse decompilers.

Mocha, the first decompiler for Java, is available at http://www.brouhaha.com/~eric/computers/mocha.html. Unfortunately, since the author recently passed away, it may not be updated anytime soon. Borland, however, has included Mocha and its companion obfuscator, Crema, in their Jbuilder product. Other decompilers include DeJaVu from Innovative Software GmbH http://www.isg.de/OEW/Java/ and WingSoft Corp's WingDis http://www.wingsoft.com/wingdis.html.

Some available obfuscators are Eastridge Technology's Jshrink, http://www.e-t.com/jshrink.html and Hashjava (now called SourceGuard) from 4th Pass Software Corp., http://www.sbktech.org/hashjava.html. Crema, the companion of Mocha, was available at http://java.cern.ch:80/CremaE1/DOC/index.html. At the time this report was written, however, the URL was not operational.

Other Tools: TakeFive Software has a language-independent development environment that supports Java, SniFF+J. it's suitable for building large client/server applications utilizing both Java and C/C++. It allows working with multiple programming languages in one unified environment. The integrated object-oriented development environment offers code comprehension, configuration management, project management, and version control and documentation tools. It also provides the ability to manage teams of developers working on large projects in heterogeneous computing environments. http://www.takefive.com/langjava.htm

ObjectShare's Parts for Java Professional is a toolset designed to fully support teams building distributed applications. It offers integrated support for PVCS, tracks changes, compares versions, and manages development projects. http://www.objectshare.com

NobleNet's Nouveau is the industry's first distributed application-development environment. It is designed to automate the generating and integrating of diverse CORBA, COM, Java, and RPC-based applications. Previously, developers could only communicate through bridge translation layers. The benefits of the new technology are greater functionality, increased productivity, and improved performance. Nouveau takes a new and direct approach to middleware interoperability by implementing native interoperability directly in the applications. http://www.noblenet.com/nouveau.htm

Apptivity, from Progress Software Corp., is geared towards development of business-critical Java database applications. It provides tools to develop, test, and maintain Java business applications. Apptivity Server manages sessions, executes Java application logic, and handles database connectivity.

http://apptivity.progress.com/java/apptivity/apptivity.htm

Rational Software Corp. makes a CASE tool with support for Java, called Rational Rose 98. This graphical component-modeling and development tool lets you model software applications. You can also perform graphical visualizations of your applications using the industry-standard Unified Modeling Language. Rational Rose 98 supports round-trip engineering. Visual Quantify lets you visually identify performance bottlenecks in your Java code. http://www.rational.com

JavaBean Component and Class Suppliers: Stingray offers JavaBean component libraries. Their Object Grid/J and Objective Blend tools package 30 Java/AWT extensions, which add professional GUI functionality to Java applications. http://www.stingray.com

The KL Group develops Jclass JavaBeans component libraries for professional GUI development. Available Beans include hierarchical grids, table, charting, data input and validation, as well as essential GUI components like tab managers, tree/outliners, and multi-column lists. http://www.klg.com

RogueWave Software offers StudioJ, a suite of integrated JavaBeans components, AWT and JFC GUI extensions, and grid, chart, and SQL database tools.

http://www.roguewave.com/ad/studioj

Ralph Spindell is the founder and executive producer of WebSpin (http://www.spindell.net/webspin), a consulting company that specializes in e-commerce solutions for small and medium-sized businesses, and has provided consulting services to major corporations such as IBM. He can be reached at ralph@spindell.net or http://www.spindell.net for Internet consulting, e-commerce, and web site design.

Companies Mentioned In This Article

CosmoSoftware Inc.

2011 N. Shoreline Blvd.

Mountain View, CA 94043

(888) 912-6766

Eastridge Technology

85 Winant Rd.

Princeton, NJ 08540

(609) 252-0825

4th Pass Software Corp.

810 32nd Ave. South

Seattle, WA 98144

(206) 329-7460

IBM North America

1133 Westchester Ave.

White Plains, NY 10604

(800) IBM 4 YOU

Innovative Software GmbH

Kaiserstr. 65

60329 Frankfurt/M

Germany

49 69 236929

INPRISE Corp.

100 Enterprise Way

Scotts Valley, CA 95066

(408) 431-1000

Intuitive Systems Inc.

599 N. Mathilda Ave.,

Suite 19

Sunnyvale, CA 94086

KL Group

260 King St. East

Toronto, Ontario

Canada M5A 1K3

(416) 594-1026

Marimba, Inc.

440 Clyde Ave.

Mountain View, CA 94043

(650) 930-5282

Mercury Interactive Corp.

1325 Borregas Ave.

Sunnyvale, CA. 94089

(800) TEST-911

Microsoft Corp.

One Microsoft Way

Redmond, WA 98052-6399

(425) 882-8080/

(800) 621-7930

NobleNet Inc.

337 Turnpike Rd.

Southboro, MA 01772-1709

(508) 460-8222

NuMega Technologies Inc.

9 Townsend West

Nashua, NH 03063

(800) 4-NUMEGA

ObjectShare Inc.

16811 Hale Ave. Suite A

Irvine, CA 92606

(949) 833 1122

Oracle Corp.

500 Oracle Parkway

Redwood Shores, CA 94065

(800) ORACLE1

ParaSoft Corp.

2031 S. Myrtle Ave.

Monrovia, CA 91016

(626) 305-0041/

(888) 305-0041

PowerBBS Computing Inc.

35 Fox Ct.

Hicksville, NY 11801

(516) 938-0506

Progress Software Corp.

14 Oak Park

Bedford, MA 01730

(781) 280-4000

Rational Software Corp.

18880 Homestead Rd.

Cupertino, CA 95014

(408) 863-9900

Reliable Software Technologies Corp.

21515 Ridgetop Circle,

Suite 250

Sterling, VA 20166

(703) 404-9293

Rogue Wave Software, Inc.

5500 Flatiron Parkway

Boulder, CO 80301

(303) 473-9118/

(888) 442-9641

Stingray Software Corp.

9001 Aerial Center,

Suite 110

Morrisville, NC 27560

(800) 924-4223/(919) 461-0672

Sun Microsystems Inc.

901 San Antonio Rd.

Palo Alto, CA 94303

(650) 960-1300

SuperCede Inc.

110 110th Ave. N.E.,

Suite 390

Bellevue, WA 98004-5840

(425) 462-7242

Sybase Inc.

6475 Christie Ave.

Emeryville, CA 94608

(800) 395-3525

Symantec Corp.

175 W. Broadway

Eugene, OR 97401

(541) 334-6054/

(800) 441-7234

TakeFive Software Inc.

20813 Stevens Creek Blvd. Suite 200

Cupertino, CA 95014

(408) 777-1440

TV Objects Ltd.

600 Alexander Rd.

Princeton, NJ 08540

(609) 514-1444

WingSoft Corp.

P.O. Box 7554

Fremont, CA 94537

(510) 744-1866

Zero G Software Inc.

118 King St. Suite 415

San Francisco, CA 94107-1916

(415) 512-7771

 

Return to Top