Message Passing Java or MPJava  is a pure-Java message passing framework supported by the java.nio package introduced in Java 1.4. MPJava is based on the Single Program Multiple Data (SPMD) model of MPI. Each MPJava instance has a unique processor identification tag (PID). Details regarding total nodes for the computation and PID are known by each MPJava instance. The programmer can easily use this information to decide how to split up the shared data.
There are point-to-point send() and recv() functions available in MPJava API, along with communication operations, for example an all-to-all broadcast(). This routine can be used to recreate the entire array of n elements on each node. The default setting is used for the routine where an array with n elements will be split between p nodes with each node holding n/p elements and the last node holding n/p + n(mod)p elements. There are series of start-up scripts available for a purpose to create a network of MPJava processes. These scripts read a list of hostnames, perform the necessary remote logins to each machine and start the MPJava processes on each machine with special arguments. The special arguments allow each MPJava process to find the others.
Each MPJAva process has TCP connections to every other process in the network. These connections facilitate the nodes for both point-to-point and collective communications. Consequently, in MPJava there are two different all-to-all broadcast algorithms presented. In a multi-threaded concurrent algorithm all pairs of nodes exchange data in parallel and a parallel prefix algorithm uses a single thread only. In the parallel prefix implementation, data exchange proceeds in log2(n) rounds, data of 2r-1 pieces is sent in each round, wher...
... middle of paper ...
...-224, Sorrento, Italy, 2005.
 R. V. v. Nieuwpoort et al., “Ibis: an Efficient Java based Grid Programming Environment”, Concurrency and Computation: Practice and Experience, 17(7-8):1079-1107, 2005
 S. Bang and J. Ahn, “Implementation and Performance Evaluation of Socket and RMI based Java Message Passing Systems”, in Proc. 5th Intl. Conf. on Software Engineering Research, Management and Applications (SERA'07), pp. 153-159, Busan, Korea, 2007.
 G. L. Taboada, J. Tourino, and R. Doallo, “F-MPJ: scalable Java message-passing communications on parallel systems”, Journal of Supercomputing, 2009.
 G. L. Taboada, J. Tourino, and R. Doallo, “Java for High Performance Computing: Assessment of current research & practice”, in Proc. 7th International Conference on Principles and Practice or Programming in Java, Calgary, Alberta, Canada, 2009. pp. 30-39.