Package cam.netapp

Classes for the Creation of Distributed Applications


The programming model for which these classes were written is very simple. Distributed applications are built from two components, a "front" component and a "back" component. These components communicate using input and output streams. The sending/receiving is blocking, so there is data driven synchronization. Additionally, the "front" component has control over the "back" component and can start, pause and stop the "back" component.

These classes were developed for the task of creating distributed applications in which the "back" component is a CPU intensive calculation and the "front" component is a user interface. These sorts of applications do not require a very sophisticated communication interface; we therefore created "minimal" classes that enable this type of application construction (as opposed to using other class structures primarily developed within the commercial sector;. CORBA, RMI etc.). See Creating Distributed Applications In Java Using cam.netapp Classes for a general description of the use of the cam.netapp classes.

Primary Classes

Source Files (in compressed form)

Chris Anderson, Dan Delsol © UCLA 1997


Primary Classes

NetworkConnection

This class performs two important functions

Instances of this class are used by the "front end" of a distributed application.

SetStreams (interface class)

Remote ("back end") application classes are required to implement this interface (in addition to the Runnable interface).

ServerManager

Instances of this class run(continuously) on the remote machine and communicate with NetworkConnection instances. Methods of this class dynamically load the remote classes and manage streams and threads on the remote machine. To get an instance running, one need only invoke the ServerManagers' main(…) method.


Support Classes

These classes provide functionality required by the NetworkConnection and ServerManager classes.

These classes and their associated methods were not meant for general use and consequently may change without warning. They are purposely not documented.

ControlThread

A class, derived from Thread, that is used to control a remote application.

JavaServer

A class that facilitates the setting up of the communication between a NetworkConnection instance and a remote class.

CPUscheduler

A standalone scheduler which schedules threads in a round-robin, equal time-slicing, fashion.

ProcessControl

A class that scavenges threads under CPUscheduler control, and removes threads which are no longer alive.