This page is old!

All the information here is seriously out of date, and of historical interest only. The page you probably want is here.

The latest development release of PolyJ, on the other hand, is here.


PolyJava

Parameterized Polymorphism for Java

Note: We were calling this project "PJava" for a while, but since there there seems to be another project called PJava out there, we've changed the name to "PolyJava."

PolyJava is an extension to the Java language which implements parametric polymorphism, with a constraint mechanism similar to that used for parameterized types in CLU. We implement these extensions by translating parameterized code into standard Java, which can then be compiled with any Java compiler, and run on a standard JVM.

This project has been fairly well tested, but bugs probably remain. No new features will be added to version 0.2.

We love bug reports, and we need as many testers as we can get. We only ask that you read the documentation below, especially the section on known deficiencies, before reporting your bugs to nickm@mit.edu

Distribution

You can download source to the compiler and support classes here. (You'll need to compile and install the binaries yourself -- the system uses GNU autoconf, so this shouldn't be too hard.) There is a reference document for testers in PolyJava/doc/Testers.ps.

The compiler is based on David Engberg's guavac. As currently implemented, our target language is Java, so you'll need to have a Java installation in order to test the compiler.

The current version is 0.2.0b. It fixes a number of bugs in 0.2.0. More bugs are known to exist: we hope to fix these in 0.2.1. 0.2.1 will fix these bugs, and improved on the existing documentation.



How does it work?

For information about translation, see the version of this document in PolyJava/doc/Testers.ps in the source distribution.

Reporting Bugs

Please send all questions, comments, or concerns to nickm@mit.edu, or andru@lcs.mit.edu.