CU Arcadia Software System

Q-Java Messaging System

Last Updated: 20 October 1995

Location:

Q-Java is delivered as part of the Q Messaging System, version 3.3f or later.

Anonymous ftp Directions:

machine: ftp.cs.colorado.edu (128.138.243.151)
Source tar file: /pub/cs/distribs/arcadia/Q3.3f.tar.Z
This announcement: /pub/cs/distribs/arcadia/Qjava.html
ICSE18 paper about Q:/pub/cs/techreports/arcadia/Q/icse18.ps.Z

Development Note:

Q provides both remote procedure call (RPC) and message-passing semantics. One of the claims for Q is that it is designed to be easy to embed into many programming languages. The non-blocking substrate architecture makes Q especially easy to insert into concurrent languages when compared to other RPC systems. For a more detailed description of the Q architecture, see our ICSE18 paper.

Recently, another Arcadia consortium member wanted to use Java, and they requested us to examine the possibility of adding Q to Java. We were intrigued by the problem since Java is a concurrent language and offered a nice test of our claims.

Over the course of 5 days, we were able to do the following.

  1. Examine the concurrent capabilities of Java.
  2. Find the hook for accessing SIGIO at the Java language level. This was in spite of limited documentation.
  3. Write some extra C code (382 lines) to match our C interface to the C stubs expected by Java.
  4. Write a thin layer of Java code (472 lines) to make the C interfaces available and to define client and server classes for use by Java programs.
  5. Test and debug the java interface to produce a working version of Q in Java.
The rapidity with which we could insert Q into Java provides a clear validation of our claims for multi-language support with Q, and for our claim that we can embed Q into concurrent languages very quickly.

Description:

Q-Java is an embedding of the Arcadia Q Messaging System into the Java language.

Q is a messaging system used as part of the ARPA sponsored Arcadia Project. Q provides both remote procedure call (RPC) and message-passing semantics as a layer above Unix sockets. It can provide both the Open Network Computing (ONC) industrial standard (the one underlying NFS) as well as CORBA2 IIOP. The Q home page provides more details about the capabilities of Q.

Selected Q-Java capabilities include the following.

Dependencies:

In order to construct Q, you will also need either the Arpc support package or the arctic support package. arctic is an implementation of the CORBA2 IIOP.

Mail List:

If you are interested in receiving occasional mailings about this system, please send your preferred email address to the contact address below and mentioning the name of this system.

Acknowledgements

This work is sponsored by the Air Force Materiel Command, Rome Laboratory, and the Advanced Research Projects Agency under Contract Number F30602-94-C-0253.

Contact and Bug Reports:

Mark Maybee (markm@cs.colorado.edu)

Secondary Contact:

Dennis Heimbigner (dennis@cs.colorado.edu)