FamilyJ
FamilyJ is an extension to the Java programming language that adds family polymorphism. Family polymorphism is a term coined by Erik Ernst for a new kind of polymorphism that is useful for using whole groups (or families) of classes polymorphically, similar to using single classes polymorphically with usual subtype polymorphism.FamilyJ has been developed in the context of the Caesar project (which requires family polymorphism for type safety), but FamilyJ is also useful on its own, hence we made it available as a separate download. FamilyJ has been implemented in the course of Andreas Wittmann's diploma thesis
Towards Caesar: Family Polymorphism for Java
For any inquiries concerning FamilyJ please contact Klaus Ostermann or Mira Mezini..
Version 0.5
The first released version of the FamilyJ compiler is version 0.5.
The source and bytecode of the compiler can be downloaded in
a .zip file that also contains a readme.txt desribing the installation procedure.
Download
Documentation
The most complete description of FamilyJ can be found in Andreas Wittmann's diploma thesis.
Download PDF
License Information
The FamilyJ compiler is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
FamilyJ was originally derived from version 2.1B of the Kopi Java compiler, Copyright DMS Decision Management Systems Ges.m.b.H. and available under the GNU General Public License.
Although the source code for the FamilyJ compiler is licensed under the GNU General Public License, bytecode produced by the compiler from user source code is free of any license obligations. This means, among other things, that users of the compiler are free to apply any licensing obligations that they wish to their code, including proprietary licenses.
Acknowledgements
The tools rely on code from the scanner generator JFlex, the gnu.getopts package,the JUnit unit test utilities, the bytecode engineering library BCEL, and the GNU RegEx package. Code for these packages is included in the download for the compiler.

