The Message-Passing Working Group of the Java Grande Forum was formed about a year ago as a response to the appearance of several prototype Java bindings for MPI-like libraries. An initial draft for a common API specification was distributed at Supercomputing '98. Since then the working group has met in San Francisco and Syracuse. The nascent API is now called MPJ.
Presently there is no complete implementation of the draft specification. Our own Java message-passing interface, mpiJava, is moving towards the ``standard''. The new version 1.2 of the software supports direct communication of objects via object serialization, which is an important step towards implementing the specification in [3]. Once a few remaining open questions about the specification have been resolved, we will release a version 1.3 of mpiJava, implementing the new API. Most likely this will be the first ``reference implementation'' for that API, although some other groups have related efforts.
The mpiJava wrappers rely on the availability of platform-dependent native MPI implementation for the target computer. While this is a reasonable basis in many cases, the approach has some disadvantages
Meanwhile, to address the last shortcoming listed above, this
report considers production of a pure-Java reference implementation
for MPJ.
Design goals are that the system should be as easy to install on
distributed systems as we can reasonably make it, and that it be
sufficiently robust enough to be useable in an Internet
environment. Ease of installation and use are special concerns to us.
We want a package that will be useable not only by experienced
researchers and engineers, but also in, say, an educational context. A
corollary of easy installation is that the software should only depend
on other systems that are widely installed. A minimum requirement is a
Java development environment, including RMI. Beyond this we assume the
installation of some Jini software. This technology is relatively new,
but it seems likely that it will become pervasive in Java-aware
environments.
We are by no means the first people to consider implementing MPI-like functionality in pure Java, and working systems have already been reported in [8, 6], for example. The goal here is to build on the some lessons learnt in those earlier systems, and produce software that is standalone, easy-to-use, robust, and fully implements the specification of [3].