Webber: A Website Construction Application


Conclusions

The structure of an application constructed from a collection of objects is very clearly defined. By ensuring that objects communicate through interfaces, the interactions between objects can also be made visible. This makes it much easier to see the divisions between various program modules and helps prevent problems that might be caused by having numerous modules anonymously interacting with each other. Non-object-oriented languages can sometimes produce a kind of inter-module spaghetti-code which undermines the very principles of modularity by diminishing the replaceability, re-usability and reliability of the constituent modules. The use of class and interface declarations and the package-naming structure imposed by Java enforces modular division and thereby ensures clearer structural definition. It is felt that the structural integrity of this project implementation has indeed benefitted from the object-oriented nature of the Java language.

Regarding the internet-based nature of the application, it was found that some programming techniques which prove very successful when applied to a single-process environment are actually must less succesful when used across a network. The use of a double-buffer in this application was found to be such a case. Double-buffering is a technique used to produce sharp, instantaneous graphics displays and involves drawing graphics output within a buffer in memory before copying the finished display to the screen. Based on prior experience with non-internet-based application development, a double-buffer system was implemented for the graphical output of this application.

One basic assumption of a double-buffering system, in its effort to produce fast, seamless displays, is that the necessary graphics are actually available to be instantaneously zapped onto the display. In an internet environment, graphics files may be located on another site in another part of the world, so the principle of rapid diplay output becomes inappropriate and, from an internet-application's point of view, it is better to get on with drawing what you have as and when it arrives. This principle is supported in Java by the ImageObserver interface, which defines an object that receives reports about an image as it is received. The ImageObserver must be used because images are loaded by a separate execution thread, to accomodate the fact that images may take some time to arrive and to allow an application to get on with other work while it is waiting.

In the event, using a double-buffer has resulted in very long delays while the system waits for graphics to arrive and has produced no apparent advantages, apart from the ability to translate and crop the finished image prior to copying it to the screen (which could be implemented in some other way). If the project was to be further developed, the double-buffering system would almost certainly be removed, or at least better adapted to the network context. In this implementation, the double-buffer remains to serve as an example of one of the differences in approach between programming for a single-user, single-process system and a multi-user, multi-tasking network environment.

As a first implementation of a non-trivial application in an object-oriented, internet-based programming language, this project has proved to be most informative. Both aforementioned aspects of the Java language have been found to have affected the design of the application and created the need for new approaches to solving various programming problems. Due to the constraints of time, it was not possible to produce a finely-polished article ready to be shrink-wrapped, or even to implement all of the functionality that was originally envisioned. Many more ideas were considered than were actually implemented, in an effort to ensure that the project as a whole would be completed on schedule.

For example, one very useful feature of most web-browsers is a 'bookmark' file, a local HTML file to which the user can add links to interesting URL's. Another feature which ought to be included in just about every application is some kind of a 'Help' system, to provided on-line information on how to use the program. Implementing these and other features, such as scrollbars and full mouse-awareness, though not actually necessary would improve the user-interface and enhance the experience of using the application.

Apart from the restriction imposed by the project schedule, these 'extras' were ommitted mainly because they involve operations which are common to many programming environments and thus contribute little to the main objective of this project; to investigate object-oriented, internet-based application development by creating a finished application. It is hoped, however, that the implementation is complete in itself, that the packages developed for this project will one day achieve true object-orientation and be used in another project, and that this documentation will provide ample information for anyone interested in developing the project further, should such a person ever exist.


Go To: IM250: Industrial Project