Our experimental implementation of parallel arrays for Java is similar to the array model of the C++ library, Adlib, developed by one us. (A similar model is also being used in the NPAC PCRC library--it is based on the HPF distributed data model.)
In Java the distribution of an array is parametrized by a member of the
Array class (as it turns out the Java Array object is more
akin to an HPF template than a data array). An Array object is
defined in terms a target group of processes and a set of distributed
index ranges, one per array dimension. The group of processes is some
multi-dimensional process grid represented by an object from the
Procs class. Each distributed index range is represented by an
object from the Range class.
Any parallel Java application is written as a a class extending the
library class Node. The Node class maintains some global
information and provides various collective operations on arrays. The
code for the ``main program'' goes in the run member of the
application class.