Q-Java


M. Maybee and D. Heimbigner

Description

Q-Java is an embedding of Q/CORBA into the Java language.

Q/CORBA is a messaging system used as part of the ARPA sponsored Arcadia project. Q/CORBA 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/CORBA home page provides more details about the capabilities of Q/CORBA.

Selected Q-Java capabilities include the following.

Retrieving Q-Java

Q-Java is delivered as part of Q/CORBA version 3.3f or later, which is available for distribution through SRM.

Alternatively, Q-java can be retrieved via FTP:

Q/CORBA distribution (including Q-Java):
ftp://ftp.cs.colorado.edu/pub/cs/distribs/arcadia/Q3.3h.tar.Z
This announcement:
http://www.cs.colorado.edu/users/serl/dot/qjava.html
ICSE18 paper about Q/CORBA:
ftp://ftp.cs.colorado.edu/pub/cs/techreports/arcadia/Q/icse18.ps

Dependencies

In order to construct Q/CORBA, you will also need either the Arpc support package or the arctic support package. Arpc is a re-engineered version of the publically available Sun ONC RPC/XDR, version 4.0. arctic is an implementation of the CORBA2 IIOP.

Development Notes

Q/CORBA provides both remote procedure call (RPC) and message-passing semantics. One of the claims for Q/CORBA is that it is designed to be easy to embed into many programming languages. The non-blocking substrate architecture makes Q/CORBA especially easy to insert into concurrent languages when compared to other RPC systems. For a more detailed description of the Q/CORBA 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/CORBA 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/CORBA in Java.

The rapidity with which we could insert Q/CORBA into Java provides a clear validation of our claims for multi-language support with Q/CORBA, and for our claim that we can embed Q/CORBA into concurrent languages very quickly.


SERL Home ©1998 Software Engineering Research Laboratory (SERL)
Last updated: 02-15-98