The HPJava software is available for free download from our Web site at www.hpjava.org. Full sources are available under a very liberal licensing agreement (at the moment no licensing agreement is required).
There are two parts to the software. The HPJava development kit, hpjdk contains the HPJava compiler and an implementation of the high-level communication library, Adlib, used throughout this report. The only prerequisite for installing hpjdk is a standard Java development platform, like the one freely available for several operating systems from Sun Microsystems. Once hpjdk is installed (which is very straightforward because it is a pure Java package) you can start compiling HPJava programs. You can immediately run sequential HPJava programs using the standard java command. Parallel HPJava programs can also be run with the java command, provided they follow the multithreaded model described in the next chapter.
To distribute parallel HPJava programs across networks of host computers, or run them on supported distributed-memory parallel computers, you also need to install a second HPJava package--mpiJava. A prerequisite for installing mpiJava is the availability of an MPI installation on your system. MPI is a standard interface for interprocess communication on parallel computers (www.mpi-forum.org). MPI implementations are freely available for many platforms of interest. Section 2.7 describes how to use mpiJava to run HPJava programs on multiple computers.
Installation of MPI and mpiJava is harder than installation of hpjdk alone. Unless you have previous experience with mpiJava (the mpiJava package incorporates a standard Java interface to MPI, which some people have been using for parallel computing independently of the HPJava language extensions) you may want to familiarize yourself with HPJava using the multithreaded model first, before attempting to install mpiJava and thus run distributed memory parallel programs. Programs that follow the patterns described in this report can be developed and debugged using the multithreaded model. In principle turning such programs into distributed memory programs then only involves adding the mpiJava classes to your CLASSPATH environment variable. In reality there are quite likely to be unexpected issues, including performance-tuning issues, complicating the transition to a distributed memory program. So we certainly wouldn't encourage you to do extensive development with hpjdk before attempting this step!