A true JNI would have the HPF codes launched by the Java VMs. More precisely, on each processor, the Java VMs would call the sequential code, compiled by an HPF compiler, as native procedures. Unfortunately, executing a parallel procedure is a less standardized process than in the sequential case: for instance, the set-up of the communication layer must complete before executing the actual user code, and there is no standard for all these parallel initializations. Hence, such a design cannot be compiler independent, and needs to know the internal of the compiler. To ensure portability across compilers and machines, we used the Java Invocation API, which allows to load a Java VM into a native application. Here, a Java VMs is launched on each processor from inside the HPF code, through HPF_LOCAL subroutines. After this point, the SPMD programs appear as native methods run inside Java threads. However, the SPMD programs are run as a whole. Thus the burden of synchronizing with the Domain Manager is on the HPF program. In practice, we had to mirror in HPF what should be the Java main program.