MetaJ home page

Generic protocol-based OO metaprogramming

(Joint work by Rémi Douence and Mario Südholt.)

Virtually all protocol-based OO metaprogramming systems are ad hoc in the sense that they reify only a smaller-or-bigger subset of the underlying run-time system. This is in contrast to a basic premise of a general notion of computational reflection: the meta-level reifies the (i.e. all of the) base system. More general reflective systems - such as Smalltalk's reified run-time system - give up the protocol structure: developping well-structured meta-level applications is much harder in this case.

The goal of the MetaJ project is the development of a generic protocol-based self-applicative interpreter for Java. The basic idea is to develop a generic reification procedure which can be used to reify any class of the interpreter. We expect such an interpreter to provide the following benefits:

Currently, we have defined a reification scheme and we have built a reflective interpreter from a non-reflective interpreter for an essential subset of Java.

Download MetaJ UPDATED!

A definition of the generic scheme and a brief discussion of the (current state of) the implementation can be found in the following articles:

last updated on 31 March 2005 by Mario Südholt