GJ is an extension of the Java programming language that supports generic types. GJ compiles into JVM code, so GJ programs run on any Java platform, including Java compliant browsers. Class files produced by the GJ compiler can be freely mixed with those produced by other Java compilers.
Poor Man’s Genericity for Java is an implementation of parameterized classes (constrained parametric polymorphism) for Java. It is based on a “lowest common denominator” design that can be implemented easily on top of any existing Java compiler. We have implemented a fully working compiler that has been built by reusing Sun’s Java compiler almost without modifications: only the way in which source and byte-code files are loaded was changed to perform simple transformations on loaded files.