This is the ReadMe for MetaJ, version 1.1 (6 December 2000) 1. Overview =========== MetaJ is a reflective interpreter for a subset of Java. It is based on a generic reification technique described in the article R. Douence, M. Südholt: "A generic reification technique for object-oriented reflective langages", in: "Higher-Order and Symbolic Computation", 14(1), Kluwer Academic Publishers, to appear, 2001. MetaJ is a research prototype for exploration of different semantically-based metaobject protocols. More detailed information (including references to the above article) is available at the MetaJ home page : http://www.emn.fr/sudholt/research/metaj MetaJ has been developed using the JDK1.1.6 (it has also been tested with Java 2, jdk 1.2 and 1.3, cf. http://java.sun.com), JavaCC 0.8pre2 and JJTree 0.3pre6 (cf. http://www.metamata.com/JavaCC). 2. Distribution =============== After having extracted the archive the distribution consists of four directories, a makefile and the file GPL.txt: - src: contains four subdirectories src/metaj : the minimal set of sources necessary to generate the reflective interpreter using javacc, jjtree and javac src/metaj-r : the minimal set of sources necessary to generate the reflective interpreter (variant potentially exposing the "referent" field to users) using javacc, jjtree and javac src/original: the sources of the original non-reflective Java interpreter (included for reference only). src/javacc : the sources generated by JavaCC and JJTree. MetaJ can be compiled using the sources in src/metaj and src/javacc without installing JavaCC and JJTree. - test: contains two test files demonstrating reflective and non-reflective programming with MetaJ - work: target directory in which MetaJ is built using the makefile (initially empty) - makefile: contains seven targets, four compilation targets (all, metaj, metaj-r, original) and targets for testing and cleaning up. all : copies the MetaJ sources and builds it using JavaCC, JJTree and javac metaj : copies the MetaJ and the JavaCC sources and builts MetaJ using javac only metaj-r : copies the MetaJ (variant possibly exposing the "referent" field to users) and the JavaCC sources and builts MetaJ using javac only original: copies the sources of the non-reflective interpreter and the JavaCC sources and builds the non-reflective interpreter using javac only - GPL.txt: GNU General Public License 3. License ========== MetaJ is "cardware" and licensed under the GNU General Public License (cf. file GPL.txt). 4. Authors ========== Remi Douence, Mario Sudholt {douence,sudholt}@emn.fr http://www.emn.fr/{douence,sudholt} Groupe Systemes et Langages a Objets Departement Informatique Ecole des Mines de Nantes France