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.
- Examine the concurrent capabilities of Java.
- Find the hook for accessing SIGIO at the Java language level.
This was in spite of limited documentation.
- Write some extra C code (382 lines) to match our C interface to
the C stubs expected by Java.
- 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.
- 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.
- A version of XDR for marshalling Java data types, including objects.
- Support for both clients and servers in the same Java program.
- Support for both multiple clients and multiple servers in the same Java program.
- Message passing (mix and match with RPC).
- Connection failure notification.
- Out-of-order replies by server.
- Continuation by server tasks after replying to a request.
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)