|
|
Overview
|
|
|
JaCo is an extensible compiler for the programming language Java. It implements
the full language up to JDK 1.4. Generics and other new language features that
will be introduced with the forthcoming JDK 1.5 are not yet supported.
The compiler is written in a slightly extended Java dialect supporting extensible
algebraic datatypes with defaults. These datatypes are described in our
corresponding ICFP paper.
Since extensible algebraic types are compiled to regular Java classfiles, it is possible
to run Jaco on any platform on which a Java Virtual Machine is available (at least
JDK 1.2 is required).
JaCo is currently used in a couple of projects at EPFL
and the School of Computer and Information
Science of the University of South
Australia.
Recently, we designed a new programming language Keris which adds an
expressive module system to Java. A re-implementation of Jaco in Keris can be
downloaded from the Keris homepage. You can also download the source
code of the re-implementation. Unfortunately, I cannot publish the source code
of Jaco on this webpage. If you are interested in browsing the code (or using Jaco
as a basis for implementing a new language extension), I would be happy if you could
contact me per e-mail.
|
|
Documents
|
|
|
-
Programming Language Abstractions for Extensible Software Components
- Matthias Zenger
PhD Thesis No. 2930, EPFL, Switzerland, March 2004.
-
Extensible Algebraic Datatypes with Defaults
- Matthias Zenger, Martin Odersky.
International Conference on Functional Programming, Firenze, September 2001.
-
Implementing Extensible Compilers
- Matthias Zenger, Martin Odersky.
ECOOP 2001 Workshop on Multiparadigm Programming with Object-Oriented Languages,
Budapest, June 2001.
-
Erweiterbare Übersetzer
- Matthias Zenger.
Masters Thesis, University of Karlsruhe, August 1998.
-
|
|
Binaries
|
|
|
There are currently four different distributions of JaCo available. One just contains the
base compiler, the others implement various language extensions. The most mature language
extension is implemented by Pico. Pico compiles Java with extensible algebraic types; it
is, for instance, used in the Scala project for
developing the various Scala tools (more than 70000 lines of code).
Please note, all distributions contain only binary files. Send me an e-mail if you want
the source-code.
- JaCo 1.3
This is the base version of all Jaco distributions. It only contains a Java
compiler which can be used as a replacement for Sun's javac.
- PiCo 1.4
JaCo is written with PiCo, an
extension of itself. PiCo maps Java + extensible algebraic types
to Java bytecodes. This distribution also contains the base Java
compiler JaCo.
- SJavaC 0.4
SJavaC is a compiler
for Synchronous Java,
developed at the Computer
Networking Laboratory at EPFL.
The compiler supports already
assert statements as specified for the forthcoming J2SDK 1.4.
This software is joint work with
David Cavin.
- CJavaC 1.0
CJavaC is a compiler for Java with Compound Types, proposed by
Büchi and Weck at OOPSLA 1998.
Details about the compilation of compound types can be found here.
This project is joint work with
Stephane Zermatten.
The distributions are best installed on a Unix system with a
Java 2
Software Development Kit. Installation is simple. Just
include the bin directory of the JaCo distribution in your path.
|
|
Author
|
|
|
Please let me know if you have any suggestions or comments concerning
Jaco or one of its extensions. You can also contact me, if you are
interested in developing an extension of Java yourself.
Matthias Zenger
software@zenger.org
|
|
|
|