Name of the Game: Cross-Platform Features

Logo

It has been said before, but it bears repeating: Solutions for the complex process of installing and configuring software across multiple platforms often arrive on developers' doorsteps as compromise products involving a trade-off between performance and functionality. In other words, bloatware that tries to do everything, but fails to do anything very well.

For Java developers, whose applications by nature are expected to run on a wide range of systems, cross-platform is the name of the game. Tools that allow users to create a single Java installation that is consistent across multiple platforms are not just welcome, they are essential. It's not surprising to see more and more products in this category appearing on the market. Installation programs that exploit Java's advantages while "respecting" every potential deployment platform are much in demand. Products that address the many delivery and setup issues fundamental to installing Java applications on different platforms and systems are finding a warm place in every Java developer's toolbox.

Although the deployment tools category is not exactly bulging with cross-platform product offerings, there are several to choose from, all promising similar features and functionality. Among the most popular of these tools is InstallAnywhere from Zero G Software. InstallAnywhere was a top vote getter in our annual Java Report Writers' Choice Awards for 2000. We asked freelance programmer L.J. Cohen to evaluate the recently released 3.5 version of the Enterprise Edition.

—John K. Waters Product Review Editor

Cup Rating Version Reviewed: 3.5
Current Version: 3.5
CUP RATING SYSTEM:
5 Outstanding 4 Very Good
3 Acceptable 2 Has Potential 1 Poor

RELEASED IN SEPTEMBER 2000, InstallAnywhere Enterprise Edition 3.5 is the latest addition to the Zero G Software line of deployment tools. (The product line includes the Enterprise Edition, Standard Edition, and InstallAnywhere Now!) This version is more or less as advertised: The UI is straightforward, the performance is very good, and it allows users to create installation programs that will fulfill the needs of almost any developer.

InstallAnywhere Enterprise Edition 3.5 is designed specifically for commercial and enterprise developers, providing them with the ability to create customized solutions for installing and configuring software across multiple platforms. Zero G distributes the product exclusively from the Web, and I was able to download and install my review copy with no trouble. (You can expect it to take a couple of hours on a machine with a 56 K modem.)

Version 3.5 of this product includes a number of new features and functionality, but probably the most important for Java Report readers is full Java 2 (v.1.3) compatibility. This version supports Linux and, with varying degrees of success, Mac OS X. It also includes a completely redesigned file tree system that now utilizes JFC Swing.

Like most currently available deployment tools, InstallAnywhere allows users to install a JVM along with an application, ensuring that customers are using the correct VM, and eliminating a heck of a lot of deployment problems. But it also allows users to designate how and when JVMs get installed. You can choose to have Java installed always, only if needed, or never.

Enterprise Edition 3.5 has a number of platform-specific features, including the ability to modify the Windows Registry, create desktop shortcuts, and install to a special file location. The icons you supply for your application are also kept in a generic format, and converted to the specific file type in use on the target platform at installation time.

The product's open API allows for the addition of customized UI panels or custom code actions for performing virtually any function before, during, and after an installation. I liked the flexible serial number and password protection features, which allow users to activate install sets and bundles and to control the installation of files and folders (see Figure 1).

Figure 1
Figure 1. Setting rules for assigning files to bundles.

I was able to use the product to build installers that deployed from an intranet, the Internet, and a CD-ROM. I found the process of preparing an application for Web-based distribution particularly fast and easy. InstallAnywhere automatically generated HTML-based Web Installers, which made it possible to run installers from a number of Web servers with no specialized server software. For my money, this is a killer feature.

I also liked the tool's graphical design environment. I found it to be both intuitive and simple to use. With the Advanced Designer, I was able to create custom install rules, add custom code, and create custom installer GUI panels. The "Open Recent" options under the File menu simplified multiple project maintenance. The new "Add Comment" made it simple to comment installer action sequences and to clarify complex sections of the installer design. And the "Save A Copy As ..." menu option worked well to simplify duplication of existing projects.

The Advanced Designer can be run in either a wizard-based or advanced mode. I'm not a huge fan of wizards, but I must admit that I found InstallAnywhere's Project Wizard less objectionable than most. The wizard guides users step by step through the process of building an ordinary install program. In terms of productivity, this is where the rubber hits the road (my own preferences notwithstanding).

The advanced mode lets users create serial numbers, establish graphical billboards to display as the files are copied, and establish install sets such as typical vs. minimal installs. More complex installations can encompass private variables and external programs.

This version's ability to detect pre-installed software makes it a good choice for configuring heterogeneous server clusters running Microsoft Windows NT, Solaris, Linux, AIX, HP-UX, and any Java-compliant server and client operating system.

Other strong features in this version include:

  • The ability to search for existing files or folders on an end-user's system, allowing for upgrade-type installs over previously installed applications.
  • Extraction of archives from a variety of formats (zip, jar, StuffIt, MacBinary, etc.) during an installation.
  • Options for setting permanent system variables (inside the autoexec.bat file on Windows 95 and 98, the registry on Windows NT or 2000, or .cshrc, .login, or .profile on Unix).
  • Flexible "magic folders" for determining dynamic installation destinations and folders at installation time.
  • International support for 29 different languages.
  • The LaunchAnywhere feature can be set with the list of JVMs that user applications support.
  • All Java 2 options can be set for LaunchAnywhere, including changing the bootclasspath and setting RMI preferences.
  • Virtually any JVM can be bundled with the users' installers, including custom or modified JVMs. Windows, Solaris, and Linux allow Java VM versions 1.1, 1.2, and 1.3. Mac OS allows MRJ 2.2.x.
  • Enhanced debug output and error messages are provided to track down any issues if they occur in a Java application.

I ran into a couple of annoyances working with this product. The first involves its insistence on keeping track of project files based on absolute paths. If you move your project source files around, InstallAnywhere will not be able to locate the files. All of the "missing" files have to be found before you open the project; if they're not, the project file may be corrupted.

This one is definitely a nitpick, but I have to mention that, although this release is billed as supporting 29 languages, the download comes with full translations for all the actions and panels in only 6 languages (English, Spanish, French, German, Italian, and Japanese). Translations for the most common panels are available in the remaining languages. Clearly, this was a space-saving move on Zero G's part, so I don't hold it against them, but it will probably be a pain if the translation you need isn't among the six included with the download. The company will provide additional translations, but you have to contact Zero G's sales department to get them ([email protected]).

And this version isn't fully cooked for the Mac just yet. Mac users should keep in mind that version 3.5 is supported on Mac OS X (that's the upcoming release, which I wasn't able to get my hands on for this review) through the "Classic" environment only. According to Zero G, future versions of InstallAnywhere will have full support for Mac OS X's "Carbon" and "Cocoa" environments.

I also found the "created by Install-Anywhere" banners that appear on all the installation programs created with it a surprising annoyance—and, well, cheezy. I mean, I like the product, but I'd like to be asked before I shill for it.

These are very small complaints, and shouldn't detract from an otherwise great product. Overall, Install-Anywhere Enterprise Edition 3.5 does what it does very well.

Vendor Info
Zero G Software Inc.
514 Bryant Street
San Francisco, CA 94107
415.512.7771
http://www.ZeroG.com

Review in a Nutshell
Pros:
  • A well-engineered product for developers looking to deploy Java enterprise software over the Internet or on CDs.
  • Full support for Java 1.1 and Java 2 (including all officially released versions of Java 2 up to 1.3.0 and HotSpot support).
  • Makes authoring installation programs a straightforward process, generally allowing quick and easy creation of installers that run on any Java-enabled platform.
  • Advanced features should cover the needs of most developers.

Cons:

  • Keeps track of project files based on absolute paths; if users move their project source files around, InstallAnywhere can't locate the files.
  • The download comes with full translations for all the actions and panels in only six languages, not the advertised 29.
  • Some gaps in its Mac support.
  • Automatically includes "created by InstallAnywhere" banners in installation programs.

Bottom Line:
InstallAnywhere offers a broad set of features that make it well-worth evaluating. Facilitates quick and easy creation of installation software. Recommended to anyone who needs to package enterprise software for cross-platform distribution.

System Requirements:
According to the vendor: "Any Java enabled platform."

  • Installers can run with 32 MB of free RAM and are compatible with Java 1.1 and later (including all officially released versions of Java 2).
  • Minimum of 64 MB of free RAM for the designer and Java 1.1 or higher.
  • InstallAnywhere installers are not supported on beta or early access releases of Java. Check the Zero G Web site for InstallAnywhere updates to support newer releases of Java.
  • Due to differences in Java implementations, the vendor recommends Java 1.1.8 or later.

Supported Platforms:

  • Architectures: Intel x86, Sparc, HP, PowerPC, MIPS (SGI), Alpha
  • Operating Systems: Windows (95 original [OSR 0] through OSR 2.5, 98 original and 2nd release, NT, 2000, and Windows Me), Mac OS 8 and 9, Solaris, Linux, HP-UX, AIX, Irix, DG-UX (Tru64), FreeBSD, Mac OS X Server.
  • Java VMs: Sun (1.1.5–1.1.8, 1.2, 1.3), IBM, Borland/Inprise, Apple MRJ, Blackdown, and the default VMs from the vendors listed above.

Price:
$1,995. Available from the Web only—no shrink-wrap versions available. Licensed on a per-developer, per-seat basis. Trial copies are available at the company Web site.

Borland/Inprise Bundles InstallAnywhere With Latest JBuilder Release
Jim von Schmacht is Senior Integration Engineer at Borland/Inprise Corp. The Scotts Valley, CA-based company is a leading provider of Internet access infrastructure and application development tools and services for several major computing platforms, including Linux, Solaris, and Windows.

Among other things, the company sells one of the most popular Java IDEs on the market: JBuilder. A comprehensive visual development tool for creating pure-Java, enterprise-scale distributed applications, JBuilder includes support and tight integration for multiple JDKs, application deployment and management, EJB, Java Servlets, JFC/Swing components, CORBA, and high-productivity coding Wizards. (For more information visit: http://www.borland.com/jbuilder/.)

According to von Schmacht, Borland/Inprise first began using InstallAnywhere to deploy JBuilder 3.5, the first cross-platform version of the product. The company continued using InstallAnywhere in JBuilder 4.0, which was released in September 2000.

Java™ Report: How long have you been deploying JBuilder with InstallAnywhere?

Jim von Schmacht: We first started using it when we came out with our complete cross-platform version [of JBuilder]. That was 3.5, so we've been using it for over a year.

JR: What were you using before?

JvS: We delivered all of our Windows products with InstallShield. For our Solaris version, we were using a shell script installer. When we were going just on Solaris machines, that made sense. But when you start thinking cross-platform, you've got to consider that your users will have varying levels of experience. We saw everything from super arcane geeks trying to squeeze 12-line things on one line, to less technically sophisticated users with a Solaris machine that got dumped on their desks. We were getting a lot of tech support calls, so we knew that we had to go back to an assisted solution.

JR: How many Java installer-authoring tools did you evaluate?

JvS: It's really hard to say. I can say that we looked at a bunch of tools before we settled on InstallAnywhere.

JR: What was it about InstallAnywhere that won you over?

JvS: [It] just had the best feature set and the most stable platform available at the time.

JR: Which features in particular impressed you?

JvS: It was several things, actually. We were coming out with a cross-platform product, so we needed a tool to support that. JBuilder is now pure cross-platform; one CD delivers everything. It broadens our market and reduces our costs.

JR: Anything else?

JvS: Another selling point was the product's ability to support custom code. That kind of flexibility was very important to us. We use custom code, which is written in Java, to do all of our low-level checks and many other things. For the user, it's all pretty transparent. Without good, solid support for custom code, we wouldn't be able to do it as seamlessly. They had the best hooks and the cleanest logic for that. [InstallAnywhere] also lets us deliver separate file sets for the different platforms. You have the selectivity you need within the install. We can deliver everything in a directory, or we can say don't deliver such-and-such file under such-and-such situation. That's all controlled by the rules-based mechanism, which we have found to be very straightforward.

JR: I understand that you're coming out with JBuilder for the new Mac operating system, OS X. Did those plans affect your decision to use InstallAnywhere?

JvS: Let me put it this way, when we come out with the Mac version, InstallAnywhere already does Mac. So it's safe to say that it didn't hurt.