magazine resources subscribe about advertising




 CD Home < Web Techniques < 2001 < March  

An Application Server with No Strings Attached

By Michiel de Bruijn

When the prerelease version of the latest incarnation of the Enhydra application server hit my desk, two questions came to mind: What's the "wireless" moniker doing in its name, and—because, after all, Enhydra is an open-source project—why do developers have to pay for it?

That last question turned out to be easy to answer. Lutris, the product's original developer, said goodbye to traditional licensing models in 1999, when it made the source to its product freely available, while continuing to generate revenue from support, training, and consultancy. So, while Enhydra is indeed fully open source and available for the cost of download from, Lutris Technologies also sells a commercially supported boxed version. Although I don't want to draw parallels between the stability or performance of the two products, you could say this is similar to the Mozilla/Netscape situation.

Which leaves the "why wireless" question. Of course, wireless is—and perhaps by the time you read this article was—the new magic word that any company interested in funding from the remaining VCs, and/or maintaining investor confidence, has to have somewhere in its business plan. But what does all this wireless hype really mean?

Enhydra 3.5 for Wired and Wireless Devices
Lutris Technologies
$695 Development License,
$995 Deployment License (per CPU)

The most important functionality on a typical wireless feature list is that "almost every wireless markup language is supported." This sounds cool, but on closer examination it isn't very impressive. Because these markup languages tend to be based on either HTML or XML, the actual functionality required to support them is minimal.

Enhydra's feature list also mentions multiple markup language support. And true enough, it supports the functional equivalent of selecting different document object models (DOMs) to serve up XML-like data over TCP/IP. While this is useful in some situations, it's hardly exciting.

Server products that make wireless claims traditionally fail to integrate with the bearer systems that run the actual wireless network and that expose the final interface to the wireless subscriber. This isn't really surprising: Such systems are nonstandard and proprietary, and typically require integration efforts specific to a particular operator.

Enhydra Wireless is no exception. But having said that—and realizing that no general-purpose application server will ever simply plug in to the wireless world—I'd also say that Lutris has actually done a great job of delivering a useful product that offers some unexpected benefits for all kinds of Web developers.

Documentation Rules

Figuring out the workings of a complex new product all by yourself usually doesn't make for a great experience. Fortunately, the wireless developer's guide included with Enhydra reminds you what good documentation is supposed to involve. In clear language, it explains the various technologies and associated markup languages, and the way they're supported by Enhydra. The manual is complemented by two extensive sample applications that take you beyond the mere basics of programming for a wireless environment: AirSent, a tracking application for a fictional air-courier company, and Enhydra Mail, a nontrivial Web-based mail client.

In case you don't happen to have a live wireless system handy on which to do your testing, Enhydra comes with evaluation versions of emulators for various interactive phones on CD. These let you see—if only for the limited time allowed by the demo software—what your apps will look like.

The supplied emulators deal only with thin HTML and WAP/WML environments. Probably because of language issues—for instance, the emulators for the cHTML/XHTML standards used by NTT DoCoMo's iMode technology are generally only available in Japanese—others are not included, although download locations are mentioned in the manual.

For those developers ready to move beyond mere testing, an evaluation version of the Nokia WAP server is included as well. (This is a bit surprising, because the open-source Alligata and Kannel gateways are a lot less expensive to deploy.) Also included is a Motorola SDK to drive the iDEN-based devices, and a prerelease version of the Motorola Java 2 Mobile Edition (J2ME) SDK.

Whereas "integrated" is perhaps too strong a word to use for these components, Lutris has at least gone to the trouble of verifying that they actually work with Enhydra. More importantly, you receive the documentation required to get things up and running fast.

Back to the Roots

OK, so what if you happen to think that wireless is pretty exciting for other people? The short answer is that even if you consider only the "wired" features of Enhydra, it's a worthy competitor to most of the big-name Java application servers.

Because of its lack of an ORB (Object Request Broker) and messaging service, Enhydra isn't fully Java 2 Enterprise Edition compliant (the upcoming Enterprise edition is the package to watch for that). However, the APIs most relevant to Web development—that is, Servlet 2.2 and JSP 1.1—are fully supported.

A very helpful non-J2EE Web development feature is the innovative XML support through Enhydra's XML Compiler (XMLC). Because it outputs dynamically recompilable Java classes based on your HTML/XML documents instead of regular JavaScript code, XMLC already significantly enhances the performance of your Web apps. However, version 2.0 takes things even further with its "lazy" DOM parser.

The lazy DOM uses a read-only template DOM that's shared across all application instances—where data is copied into a specific instance only when it's required. This works well if only particular nodes are accessed and the instance doesn't traverse the entire document.

Other items of interest include the Presentation, Session, and Database Managers—collectively powering what Lutris calls SuperServlets. These make it easy to associate Java code with URLs, keep session state (with or without using cookies), and access JDBC-compliant databases.

The Enhydra tools obviously have their roots in the command-line environment, but Lutris supplies GUI wrappers for most of these utilities as well. And, looks aside, you'll find the features are more than sufficient. The Web-based MultiServer administration GUI, for example, allows for quick and reliable monitoring, server state control, and debugging of applications across all your Enhydra servers. I had some minor issues with the debugger, like its reluctance to connect to the exact process instance I wanted. But, even that provided a better out-of-the-box experience than most other application servers I've worked with.

And, as I've mentioned before, documentation for all of the tools included with Enhydra is excellent. Without making you wade through too much verbiage, it does a good job of explaining both application server basics and more advanced topics.

Keeping Developers Happy

Although it works with just about any development environment, Enhydra provides out-of-the-box support for some popular Java IDEs through its Kelp add-on. Kelp version 2.0 works only with Borland JBuilder and Oracle J Developer, although the tool's release notes (as well as the inclusion of this IDE on the Enhydra CD) hint at future support for Sun's Forté for Java.

Provided you use one of the supported products, Kelp makes creating and deploying Enhydra Web applications and servlets from within your current IDE really easy. The import wizard takes an existing project—which can be a skeleton app you just generated using the application wizard—and converts it into a ready-to-run format.

A front end to the XML compiler is also provided. The deployment wizard can upload your finished application to an Enhydra server, as shown in Figure 1. This can be done with full support for deployment templates and static content like style sheets, HTML, images, and, the archive files containing your code.

Database support is provided by InstantDB, a semi-SQL-92 compliant database engine with some object-oriented features. This seems to work just fine. But it may not offer much advantage over the database server product you're currently using, other than its small memory footprint (just under 200KB) and support for transparent data encryption.

Enhydra's support for other JDBC databases is more than sufficient; Lutris includes a copy of PostgreSQL on the CD, complete with detailed setup instructions in the manual. During testing, Microsoft SQL Server (using the JTurbo ODBC driver) gave no trouble either. The other officially supported database engine is Oracle. However, I have no reason to assume things won't work with any other database that has decent JDBC support.

For database functionality, Enhydra provides the Data Object Design Studio (DODS), an object-oriented GUI design tool for building databases (or reverse-engineering existing ones) and generating Java code to access, create, update, and query them. Foreign keys, one-to-many, and many-to-many relationships are all supported. The QueryBuilder also allows easy interactive design of even moderately advanced queries.

Answering the Tough Questions

After working with the product for a while, I was fairly impressed with Enhydra—there's no doubt in my mind that the product can help you build better Web apps. But functionality is only one aspect. When discussing whether to adopt a product, there are three major issues to address: performance, scalability, and support.

Performance is always a tricky issue, if only because of the lack of standardized tests to gauge an application server's speed. However, I have a good feeling about Enhydra. Its servlet engine is compact, and if the contribution from Intel's 64 Fund to optimize speed on Enhydra's IA-64 architecture is any indication, the folks at Lutris are definitely interested in performance tuning.

I couldn't find any published performance comparisons between Enhydra and its competition. But the fact that you can save more than $10,000 per CPU by going with the Lutris product leaves you with some money to throw at extra iron in case problems arise.

Which brings us to scalability. Enhydra's (free) Director add-on supports load-balancing of Web server requests across multiple application servers, eliminating the need to build a giant Enhydra box. As expected, the product documentation contains an excellent discussion of the issues involved, and the setup is about as simple as it gets.

One drawback is that Director doesn't deal with HTTP requests, so you'll have to use a third-party solution to achieve load balancing across your front-end Web servers. Given the wide availability of such solutions (both in hardware and in software, including some free options), that shouldn't be too much of an issue.

Since Enhydra is an open-source product, you might have some misgivings about the availability and quality of support. After all, not everyone is interested in just taking the source code and fixing problems themselves.

Lutris' boxed version solves that problem quite nicely: It comes with all the amenities you'd expect from a commercial vendor, including a list of supported software, technical support (pay-as-you-go after a number of free incidents), training, and even consultancy.

The bottom line is that whether you go for the free download (which may lack some documentation) or the nonfree—but still affordable—packaged version, Enhydra offers excellent value. Even if you've been disappointed by a higher-priced solution in the past, Enhydra just might work for you.

Michiel lives in Rotterdam, The Netherlands. He's a networking and development specialist for an international media group and he welcomes questions and comments. You can reach him at

Copyright © 2003 CMP Media LLC