Introduction With the proliferation of the internet, web-based application development has become the norm, with dynamic internet sites being produced by hundreds of programmers in a variety of programming languages and environments. Most popular amongst the web development languages is Java; with extensive library support for servlet development and enterprise connectivity via Enterprise Java Beans. The Eiffel programming language has long had the reputation of a language that focuses on the construction of quality software. With support for Design by Contract(TM), clean syntax and powerfull pure object-oriented constructs, Eiffel can be used to effectively build robust applications, ranging from large business software through to complex engineering systems. However, support for web applications has been poor. Few Eiffel libraries exist that assist in the development of web applications. The Goanna library provides a comprehensive web application programming library for Eiffel programmers, including a servlet API that will be familiar to existing Java programmers and easy to understand for non-Java programmers.
Why Goanna? Existing web libraries, such as EiffelWeb(TM) and clusters of ePosix, are limited to Common Gateway Interface (CGI) style applications which only allows stateless requests &emdash; typically a client makes a request via HTTP and the server executes the CGI application passing the input via stdin and retrieving the output via stdout. The result of the request is sent back to the client. Executing the CGI application for every request implies a great deal of operating system overhead. The Java servlet API is a framework for building long-lived statefull web-applications that allow multiple requests to be handled by one executing application. I have been programming with the Java servlet API for many years and have been waiting patiently for the time when I could move over to commercial web site development in Eiffel. I waited and waited for the right libraries to come along, but it never happened. As they say, I bit the bullet and started writing Goanna. Initially, the library was based loosly on the Enhydra Java framework from Lutris, however, it has since moved closer to the Java servlet API and its future lies in providing a framework for web services.
Platforms Goanna is a multi-platform library and should run on all platforms on which an Eiffel compiler is available. However, it has only been thoroughly tested on Linux and Windows 2000.
Compilers The development of Goanna has been primarily performed using ISE EiffelStudio. All library classes and examples work with ISE Eiffel 5.1 and onwards. Support for SmallEiffel is progressing. Due to the use of agents some facilities of Goanna will not compile, such as XML-RPC. Many of the examples also use EiffelVision to provide a portable GUI; these examples will only compile with ISE Eiffel.
Required Libraries Goanna relies on a number of third-party libraries and tools for it to compile and execute correctly. The following sections describe each of the required tools and briefly describes there installation. Consult the documentation that comes with each library for more details.
GOBO Goanna makes extensive use of the GOBO library to ensure that it is portable. GOBO, developed by Eric Bezault and many others, provides a comprehensive set of data structure and support classes that hide the differences in compiler implementation. The GOBO tools, geant and gexace are used to simply the build process dramatically. A recent version of GOBO is required to build and use Goanna. I also recommend its use in any libraries and applications you develop. GOBO is available at http://www.gobosoft.com and should be installed as per the instructions found at the Gobosoft site. Make sure you have set the GOBO environment variable to point to the top level directory of the GOBO installation. Also make sure you add the GOBO bin directory to your path.
Installation and Compilation Goanna can be installed from a packaged distribution file or directly from the CVS repository. The pre-packaged distributions represent stable releases that are suitable for general use, while the CVS repository contains the very latest source versions and should be used only for development and beta testing of new features. If you are installing from a pre-packaged distribution you only need to extract the archive into a directory of your choice.