Neben PVM (Parallel Virtual Machines), das wir in der ersten Auflage noch besprochen haben, erfreut sich in den letzten Jahren der Message Passing Interface (MPI)-Standard einer steigenden Beliebtheit im High Performance Computing. MPI ist zunächst nur eine Spezifikation eines Kommunikationsmodells, es ist keine Computersprache und kein Produkt [MPI94,MPI97]. Allerdings bieten praktisch alle HPC-Computerhersteller eigene Implementierungen von MPI an und es existieren zwei `freie' Implementierungen [ACG$^+$00,SMML00]. MPI kann nach der Spezifikation zusammen mit FORTRAN und C/C++ eingesetzt werden. Das Java Grande Forum bemüht sich seit 1998 um die Einbeziehung von Java in die MPI-Spezifikation [CGJ$^+$98].
MPI definiert Funktionen
Bei der Kommunikationshardware wird insbesondere TCP/IP neben speziellen Highspeed-Netzwerken unterstützt. MPI 1.0 enthält keine Definitionen, wie MPI-Programme gestartet und verwaltet werden sollen, hierfür ist man auf die Unterstützung der jeweiligen Anbieter angewiesen.
MPI 2.0
Bei der Kombination von MPI und Java werden zwei Wege beschritten:
Der erste Weg hätte den Vorteil, dass viele Java-Techniken wie RMI, JMS und Jini für MPI nutzbar wären [BC99]; es gab aber bis 2007 keine (die MPI und Java Gemeinde) zufrieden stellende Implementierung.
Der zweite Weg hat den Vorteil, dass man auf eine ausgereifte und angepasste MPI-Implementierung zurückgreifen kann, aber aus Sicht von Java hat man immer mit einer zweistufigen Implementierung zu kämpfen.
Bis 2005 wurde das frei verfügbare auf TCP/IP basierende MPICH [ACG$^+$00] und als Java-Anbindung javaMPI [KLL$^+$99] eingesetzt. (Neben MPI 1.2 wurde die Verwendung von Java-Objekt-Serialisierung für die Kommunikation unterstützt.)
Seit 2007 wird javaMPI nicht mehr weiter entwickelt und es gibt jetzt eine reine Java Implementierung von MPI in Java MPJ Express.