Thanks to the World Wide Web, freely available products range from the Mosaic and Netscape Web browsers and Apache Web server to the mySQL database and Linux operating system. As the popularity and number of free products continues to grow, it is no surprise that many recent freeware products are purely Java based or have Java-based APIs as part of their packages.
Over the years, I have worked with many such products. The one thing most of these free products have in common is that they are all painful to set up. This is usually due to poor documentation and install scripts. In this column, I have picked one such product to gripe about: Tomcat v3.1, the official JSP/servlets reference implementation being developed by the Apache Software Foundation.
Before I continue, however, I do want to emphasize that most of these products, including Tomcat, are extremely robust and flexible. The issue is really the enormous amount of time that is required to understand and configure them.
Tomcat, Jakarta, Java-Apache, and Apache JServ: How are they related?
In recent months, whenever I have visited Java.sun.com's Java servlet and JSP Webpages, I noticed the Jakarta and Tomcat logo and references to this project/product. The first question that crossed my mind was, "What is the difference between Jakarta and Tomcat?" So I decided to take the next step and clicked on the Tomcat link to the Apache site. Once I got there, things became even more confusing when I noticed the use of terms Jakarta, Tomcat, and Apache JServ, along with mentions of various other subprojects, such as Slide and Struts. I had to drill down into the documentation before I realized that Jakarta is the name of the project and Tomcat is the actual product.
I've had some experience with the Apache Web server and know that it uses a pluggable module architecture, with modules such as
mod_jserv (for Java servlets), and so on. Therefore, my initial thought was that Tomcat was a module that plugged into the Apache Web server. But after downloading and installing Apache and doing some in-depth reading, I realized that Tomcat is a pure Java-based product that can operate standing alone. (Now it all makes sense!) As nice as the Apache Web server is, I decided to uninstall it, mainly because I didn't need it. Of course, clearer instructions or distinction between the various Java-related products on Apache's Website would have prevented this waste of time.
Anyway, I continued to set up Tomcat.
Getting the server up and running was fairly easy because Tomcat is a pure Java product, and the
.bat files in the typical
bin/ directory are well written. The tough part was configuring the server using the XML- and Java Properties-based configuration files. (Yes, Tomcat uses both types.) Again, the documentation didn't help much, because what was available was also quite scattered -- the documentation runs from Webpages and CVS repository links on Apache's Website to subtopics at jGuru.com and the bare-bones guidelines provided with the product. However, after a few hours of struggling with Tomcat and configurating its files, I managed to get it running like a charm.
For the most part, the product works beautifully. I was even able to try out an ISAPI redirector for Microsoft's IIS server. However, there are still some tags in the configuration files for which I can't find documentation. Also, I'm unable to correctly configure some SecurityManager policy elements with Tomcat, again due to lack of documentation. I have to keep reminding myself that this is a free product.
A simple request
I have worked with several flavors of Unix and Linux systems, so I'm used to poor install programs. But I guess I've gotten spoiled over the past few years by easy install programs on Windows; and, quite frankly, I would never go back to the old-fashioned way of fussing with install programs because I just don't have the time. My time should be spent developing applications.
You must be thinking: "It's a free product, so quit your whining." And I agree with you. But I suppose my thinking is this: if people can spend so much time building products as robust as Tomcat, Apache, or mySQL, then why can't they take the time to add a nice install program and some good documentation? (Yes, I realize developers hate to document -- trust me, I know. I'm one of them.)
Freeware is just what the name implies -- it's free -- so you take what you can get and live with it. However, there are more complete packages being introduced, such as Enhydra's InstantDB, Jive from CoolServlets, and others. These products are relatively easy to install and come with ample documentation. Also, you might consider Microsoft to be the Evil Empire, but the company does an admirable job with its free products. It might not hurt to take a few notes.
I hope that other groups developing freeware will realize the value of documentation. With the thousands of people using free products these days, documentation is well worth the effort. Meanwhile, check out some of the free Java products mentioned in the Resources section below.
Learn more about this topic
- Download the Jakarta Tomcat product
- InstantDB Java-based relational database
- Jive, from CoolServlets
- MySQL relational database with JDBC drivers
- Hypersonic SQL relational database
- Free downloads at iSavvix's Java community site
- FreeBack.com, a free, purely Java-based file storage service
- Sun's JSP homepage
- Sun's Java servlet homepage
- jGuru's Website
- "Use Microsoft's Internet Information Server as a Java Servlet Engine," Thomas E. Davis (JavaWorld, June 16, 2000)
- Anil Hemrajani's previous Soapbox column, "Do You Really Need Enterprise JavaBeans?" (JavaWorld, October 6, 2000)