![]()
Java espresso is a Java 1.0 compliant compiler being developed at Boston University. The project started last semester under the coordination of Prof. A. J. Kfoury. The objectives of this implementation were to understand the issues involved in the development of a modern object-oriented compiler for a real language, to study the Java Virtual Machine (JVM) and its runtime system and to discover places where some of the technology developed by The Church Project could be applied.
Two graduate students were responsible for the implementation: Santiago M. Pericas (PhD) and Karl Doerig (MA). Two other students were also involved in the project: Gabriel Nasser and Jisook Youn. The first non-trivial programs were compiled after three months of very hard work. The sources for version 0.4 (that includes support for exceptions) can be downloaded here.
![]()
References & Useful Links
- Modern Compiler Implementation in Java [MCIJ]
- The Java Language Specification [JLS]
- The Java Virtual Machine [JVM]
- Jlex A Lexical Analyzer for Java
- CUP Parser Generator for Java
- JavaCC, The Java Parser Generator from Sun
- CVS, Concurrent Versions System
![]()
Implementation
- This is a report describing the architecture of Espresso. It also containes a list of language features which are currently not fully available in Espresso. If you would like to participate in Espresso's further development, have a look!
- Report (html) (Has some problems with showing graphics)
- Report (Postscript)
- Report (PDF)
- Documentation (javadoc)
- Slides
- Define project goal. (Santiago's slides)
- Presentation of JavaCC. (Karl's slides)
- Presentation of Java syntax. (Santiago's slides)
- Java Concepts, including terminology, constructors, strings and name spaces. (Karl's slides)
- Structure of the Java virtual machine, overview runtime environment, types in JVM, runtime data area, frames. (Santiago's slides)
- Java Class File Format: descriptors, constant pool, fields and methods. (Karl's slides)
- Java Class File Format: attributes, static and structural constraints, verification of class files. (Karl's slides)
- Constant Pool resolution. (Santiago's slides)
- Interesting aspects of implementation. (Santiago's slides), (Karl's slides)
- Compiling for the JVM. (Session I) (Santiago's slides), (Karl's slides)
- Compiling for the JVM. (Session II) (Karl's slides)
- Compiling for the JVM. (Session III) (Santiago's slides)
- JVM: Threads and Locks. (Karl's slides)
- Class hierarchy (1998.26.1)
![]()
Santiago Pericas, Karl Doerig
Created : 98.01.21
Modified : 98.08.20