\section{Conclusions}
\label{sec:conclusions}

This paper has described the design, implementation, and evaluation of a
system to compile the parallel language \nesl\ into serial Java code.
This system has enabled us to convert existing simulations and algorithm
animations written in \nesl\ into Java applets~\cite{nesl-applets}.  By
combining the portability of Java with the power of a high-level
programming language we can quickly make available demonstrations of new
parallel algorithms developed by our project.

Java was easy to use, and has enough functionality to allow a clean
implementation of our system.  The translation was made significantly
easier by \nesl's use of a vector-based intermediate language, whose
operations can be implemented by a Java class; a similar approach could
be used for other data-parallel languages such as HPF and APL.
Just-in-time Java compilers achieve about half the performance of the
native \nesl\ implementation on a set of algorithm benchmarks, and this
performance gap is likely to narrow as Java technology improves.  We
conclude that Java is a viable choice as an intermediate language, and
that it can be used to increase the portability of existing languages
for scientific simulation and computation.  Source code is available
from the authors.

