- ...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.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.