Definições:

Java é uma linguagem de programação orientada a objetos e muito popular (em 2003 atingiu a marca de 4 milhões de desenvolvedores em todo o mundo). É conhecida por gerar um código que roda sob uma máquina virtual, portanto portável.

MPI, sigla em inglês para interface de passagem de mensagem, é um padrão para comunicação em computação paralela e distribuída. MPI oferece uma infraestrutura para a tarefa de trocar informações entre vários processadores, nós ou clusters.

MPI é um padrão aberto e existem várias implementações livres ou comerciais desse padrão.

MPI com Java:

Embora oficialmente Java não provê um binding para MPI, houveram várias tentativas para ligar Java com MPI, mas com diferentes graus de sucesso e compatibilidade.

Nos esforços para trazer os benefícios do MPI para o Java houveram duas abordagens seguidas. Uma delas foi reescrever todas as funcionalidades do MPI diretamente em Java e a outra foi criar bindings para o Java acessar implementações nativas já existentes do MPI.

JavaMPI – Geração automática de wrappers para o MPI. Os wrappers para o JavaMPI são geradas automáticamente dos cabeçalhos do MPI do C através de um gerador de código de propósito especial. Isso facilita o trabalho de implementação mas não nos leva a uma API totalmente orientada a objetos porque ela está muito atrelada ao bindindig do C. Essa implementação está atrelada a biliboteca LAM6.1 para JDK 1.0.2 para Solaris, que está disponível em http://perun.hscs.wmin.ac.uk/JavaMPI.

MpiJavaUma interface Java para o MPI. Apresentado no 1° Workshop em Java para HKCN, 1998. A API do mpiJava segue o modelo dos bindings de C++ definidos nos padrões do MPI 2.0, erquendo sua estrutura de hierarquias diretamente dos bindings de C++. Ela especificamente suporta o subconjunto do MPI1.1 desse padrão. A implementação do mpiJava é através de wrappers JNI para as implementações nativas de MPI. http://grids.ucs.indiana.edu/ptliupages/projects/HPJava/papers/ipps99/paper/paper.html

Links úteis: