\documentclass{article}
\usepackage{amsfonts}
\usepackage{amsfonts}
\usepackage{graphicx}
%\oddsidemargin=0cm
%\evensidemargin=0cm
%\textwidth=6.5in
%\textheight=9in
%\topmargin=-.5in

\def\Cpp{{\tt C++}}  
\def\ignore#1{\relax}
\def\txt{\tt \small}
\def\baselinestretch{1.2}

\title{NextGen Developer's Guide}
\author
{
	\begin{tabular}{c}
		Eric Allen \\
		eallen@cs.rice.edu \\
		Rice University \\
		6100 S. Main St. \\
		Houston TX 77005 \\
	\end{tabular}
}

\begin{document}
\maketitle

\section{Introduction}
This document describes the high-level architecture and code layout of the {\sc NextGen} prototype compiler at Rice University. The {\sc NextGen} compiler was developed as an extension to the {\sc GJ} compiler under special license from Sun Microsystems. This same compiler was extended independently by Sun Microsystems to form the JSR-14 prototype compiler, scheduled for inclusion in J2SE 1.5. In the process of developing {\sc NextGen}, we have refactored the original {\sc GJ} compiler substantially, and no attempt has been made to maintain compatibility with the JSR-14 source code. Nevertheless, the reader may find that some of the architectural features of {\sc NextGen} described here are helpful when deciphering the JSR-14 code base (modulo class, package, and variable name changes). 

Throughout this document, it is assumed that the reader is familiar with the {\sc GJ}, {\sc NextGen}, and {\sc MixGen}  language designs, as well as the published descriptions of how these languages can be compiled to the JVM so as to maintain compatibility with existing compiled binaries. Readers not already familiar with this material are referred to \cite{GJ, NextGen, MixGen}.

\section{The {\sc NextGen} CVS Repository}
The {\sc NextGen} source code is maintained under the {\txt javaplt} CVS repository at Rice University, and is available to all members of Rice JavaPLT. You can access this repository from any machine with access the the Rice CS network. To do so, set your CVSROOT to {\txt <user-name>@cs.rice.edu:/home/javaplt/.cvsroot}. If you are accessing the repository remotely, set your {\txt CVS\_RSH} variable to {\txt ssh}. Then perform the following steps to set up your environment for {\sc NextGen} development:

\begin{enumerate}
\item In your home directory, create a new subdirectory called {\txt javaplt}.
\item In your {\txt javaplt} directory, enter the following commands:
\begin{verbatim}
$ cvs checkout bin
$ cvs checkout packages
$ cvs checkout public_html
$ cvs checkout java/<your-plaform>
\end{verbatim}
\end{enumerate}
\begin{thebibliography}{bib}

\bibitem{Agesen} O. Agesen, S.. Freund and J. Mitchell.  Adding Type
Parameterization to the Java Language. In OOPLSA'97.

\bibitem{Theory} D. Ancona and E. Zucca. A Theory of Mixin Modules: Basic 
and Derived Operators. Mathematical Structures in Computer Science, 
8(4):401--446, 1998.

\bibitem{MixGen} E. Allen, J. Bannet, R. Cartwright. 
{First-class Genericity for Java}.
Submitted to ECOOP 2003.

\bibitem{SoundMixGen} E. Allen, J. Bannet, R. Cartwright. {Mixins in 
Generic Java are Sound}.
Technical Report, Computer Science Department, Rice University,
December 2002.

\bibitem{EfficientNextGen} E. Allen, R. Cartwright, B. Stoler. {Efficient 
Implementation of Run-time Generic Types for Java}. IFIP WG2.1 Working 
Conference on Generic Programming, July 2002.

\bibitem{CaseForNextGen} E. Allen, R. Cartwright.{The Case for 
Run-time Types in Generic Java}. Principles and Practice of Programming 
in Java, June 2002.

\bibitem{Jam}D. Ancona, G.Lagorio, E.Zucca. {JAM-A Smooth Extension 
of Java with Mixins}. ECOOP 00, LNCS, Spring Verlag, 2000.

\bibitem{Bloch and Gafter}J. Bloch, N. Gafter. Personal communication.

\bibitem{NextGen} 
R. Cartwright, G. Steele. {Compatible Genericity with Run-time Types
for the Java Programming Language}.  In {\it OOPSLA '98\/}, October
1998.

\bibitem{GJ}
G. Bracha, M. Odersky, D. Stoutamire, P. Wadler. {Making the Future
Safe for the Past: Adding Genericity to the Java Programming
Language}. In {\it OOPSLA '98}, October 1998.

\bibitem{MatthiasMixin}
M. Flatt, S. Krishnamurthi, M. Felleisen. {A Programmer's Reduction
Semantics for Classes and Mixins}. Formal Syntax and Semantics of
Java, volume 1523, June 1999.

\bibitem{Pizza} Martin Odersky and Philip Wadler.
{Pizza into Java: Translating Theory into Practice}. In 
{\it POPL 1997}, January 1997, 146--159.

\bibitem{JSR14}
Sun Microsystems, Inc. {JSR 14: Add Generic Types To The Java
Programming Language}.  Available at {\txt
http://www.jcp.org/jsr/detail/14.jsp}.

\end{thebibliography}
\end{document}
