We illustrated, by a detailed discussion of the coding of two parallel applications, that the parallel primitives introduced in HPJava are a good match to the requirements of various applications. The limitations imposed on distributed control constructs like overall, and especially the strict rules for subscripting distributed arrays, may look strange from a language design perspective. But these features are motivated by patterns observed in practical parallel programs.
In particular the language provides a good framework for the development of SPMD libraries operating on distributed arrays. The collective operations of high-level libraries like Adlib, operating directly on distributed arrays, abstract and generalize the popular collective operations of MPI and other SPMD libraries. They also follow in the spirit of the array intrinsics and libraries of Fortran 90/95 and HPF. The language resembles HPF in various ways. But the programming model is closer to the MPI style. MPI programming seems to have been more popular in practice than HPF, perhaps because it gives the programmer control over communication, and it allows the programmer to estimate the cost of his program by looking at the code. We claim these as advantages for HPJava, too.
In its current stage of development HPJava, like HPF, seems most naturally suited for problems with some regularity. This is not to say that more irregular problems can't be tackled. But doing so will at least need more specialized communication library support.
We have also shown that the performance of the initial implementation of HPJava is quite promising. The current implementation provides full functionality, but it has not been seriously optimized. There is scope for dramatic improvements in efficiency