Check out the new USENIX Web site.

...Reflection
This work is partially supported by Agilent Laboratories and Lombard Odier & Co.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...:
Time decoupling: the interacting parties do not need to be up at the same time. Space decoupling: the interacting parties do not need to know each other.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...pattern
In [Car98], the notion of pattern is used in a different sense, namely to express event-correlation: a notification is triggered upon arising of a combination of several elementary events.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...language,
A similar mismatch has been largely discussed in the domain of object-oriented databases, where two separate languages coexist; one for the definition of data and another one for the querying of data [BZ87].

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...GRYPHON [BCM+99,SBS98],
In GRYPHON, reflection is also used ([SBS98]), but not for the expression of subscription patterns: the GRYPHON system uses the same information dissemination mechanisms it offers to applications (which is its primary concern) for internal protocol communication.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...returned.
With k = 0, the object m itself is accessed as a whole. il=0 means that Mi is an argument-less method. We do not consider side-effects of the access methods Mi.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...API.
JAVA 1.3 integrates a limited mechanism for computational reflection with the java.lang.reflect.Proxy class.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...invocation.
Note that with JAVA method objects, a native value is wrapped by an instance of its corresponding object type, which makes the nesting of invocations even simpler.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...errors.
To verify whether a given reified type conforms to another one, we mainly rely on the isAssignableFrom() method in class java.lang.Class.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...TIGUKAT [SO95].
The major difference between queries in an object database and the filtering of messages by a middleware is the duration of a query. With a middleware system based on content-based publish/subscribe, the query is expressed for future objects. In object databases, queries are performed on a snapshot of the system, but the expression of the query can be made similarly. [PO93] also describes the use of reflection for a closer integration of the language with TIGUKAT.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...interface,
The counterpart to the well-known Magnitude type in SMALLTALK [GR83].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...implement.
This counteracts JAVA's lack for operator overloading (as provided for instance by C++ [Str97]).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...optimizations.
In a companion paper [EGS00b] we introduce type-based publish/subscribe: a static classification scheme based on the types of message objects. The type-based publish/subscribe scheme ensures type safety, and thus enforces optimizations through the inherent knowledge of types and makes type checks and casts inside the application code superfluous.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...[TCKI00].
[KMS98] terms this technique (runtime) linguistic reflection, which is seen as a synonym of structural reflection.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...s.
Our system relies on a hierarchical topology of message brokers, among which membership information is split up. A single process rarely has knowledge of more than 100 participants.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Patrick Eugster
12/10/2000