The most popular message-passing libraries are PVM and MPI. Several projects are under way to make message-passing packages that support programs written in Java. Current message-passing in Java can be classified into two categories. The first category consists of Java based implementations that use Java as wrapper for existing message-passing libraries called through the Java native interface (JNI). The use of native methods achieves better performance and allows programmers to reuse existing codes. However, it restricts jobs to run only on systems where both Java and corresponding message-passing library are supported. The second category of Java based implementations use only pure Java libraries. Typically, in this case the underlying communication libraries are Java's RMI or sockets. The pure Java implementation obtains a high degree of code portability among platforms but may have lower performance. It is expected that the performance problem will be reduced with just-in-time (JIT) compilation and other compiler technologies.
In the next section we will discuss Java interfaces to two popular message-passing standard, PVM and MPI.