
Remote Java Foundation Classes
|
People |
CGUI Lab |
Downloads |
Papers |
What is RJFC?
Remote JFC is a working distributed user interface toolkit that makes it possible to develop
thin-client applications using a distributed version of the Java Foundation Classes.
In the thin-client' technology we are developing, the application runs on the
server, while the user interface is displayed on another computer. Our
technology improves upon existing systems, such as AT&T's VNC software, in that
we have lower server overhead and bandwidth requirements. This software
development kit will be used to implement the user interface for Columbia's
NSF-funded Digital Libraries project.
It is being developed in the Columbia University Computer Graphics and User Interfaces Lab
under Professor Steven Feiner.
How to use RJFC?
There are two kinds of people who use RJFC: the application developers and the application users.
RJFC for application users:
The user can run the viewer using either the run_viewer.cmd or run_viewer.sh script. These scripts open the RJFC Viewer window. This window contains a textfield, a connect button, a disconnect button, and a status message textarea.
To run a remote application, the user
enters the host and application names in the following format:
hostname/ApplicationName
and then clicks the connect button.
If the user has not entered a valid application name on the specified server, a
dialog box will pop up that lists all available applications on that server.
If there are no available applications on that server, an error message box will
pop up.
Upon a successful connection with an RJFC application, the initial screen for the application will pop up.

RJFC for application developers:
There are two ways in which a developer can create an RJFC enabled application: create a Java class that implements the Application interface or a class that implements the ChildApplication interface (both in package edu.columbia.cs.cgui.rjfc).
If your class implements the Application interface you must instantiate the RJFCServer class passing it your application name. This is the name that will be used by RJFC Viewers to remotely run your application. You must also pass a reference of you class to the RJFCServer. When the RJFCServer receives a connect/disconnect message from an RJFC Viewer it will call appropriate methods on your class (these are the methods declared in the Application interface). It is up to your class to handle multiple RJFC Viewer connections. To begin your application on the server you just need to run your class on the server from which you want your application to be served.
If your class implements the ChildApplication interface you have one less thing to worry about. That is you do not have to worry about multiple RJFC Viewer connections. You are not even responsible for instantiating your class or creating a main method. All that is taken care of by the MuxApplication class. This class multiplexes connect and disconnect messages from multiple RJFC Viewers. Each time it gets a connect/disconnect messages from RJFC Viewers it will call appropriate methods on the appropriate instance of your class (these are the methods declared in the ChldApplication interface). To being your application on the server you just need to run the MuxApplication class passing it the name of your class and the name of your application.
Screenshots
The RJFC Viewer:

The remote notepad application:

The remote chat application:


Documentation
See Documentation for RJFC here.