O'Reilly logo

Practical Internet Groupware by Jon Udell

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 15. Distributed HTTP

When I deployed GroupCal, the servlet-based group calendar discussed in Chapter 10, most people liked it. But BYTE’s editor-in-chief complained that it didn’t work on airplanes, where he spent a lot of his time. Like all web-based software, GroupCal assumes that its display engine—that is, the browser—connects over a network to an HTTP server.

How hard could it be, I wondered, to run the servlet locally on a disconnected client? Not very hard at all, I found. That discovery prompted me to write a contact manager based on a tiny web server written in Perl. These experiments showed me that web-based groupware—such as a calendar or a contact manager—needn’t depend on a network connection to a conventional HTTP server. Such applications, written in Java, Perl, or any other productive, socket-capable language, can also rely on lightweight, local HTTP servers implemented in these same languages. My two prototypes, one in Java and one in Perl, exhibited the following characteristics:

Small footprint

Both weighed in at under a megabyte, so they could be delivered on a single floppy or by way of a reasonable download. That megabyte included the local web server, the application logic, and the data.

Good performance

Both ran acceptably under Windows 95 on my aging 486-50, 16MB notebook PC.

Simple configuration

Both could be installed by just unzipping the contents of a floppy, or equivalent download, into a single directory. One required a single environment variable, ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required