HPJava is an extension of Java that supports parallel programming, especially data parallel programming on message passing and distributed memory systems. It introduces a high-level structured SPMD programming style called the HPspmd model where process groups cooperate in a loosely synchronous manner, sharing logical threads of control. The language provides global distributed arrays that are stored collectively across process groups to relieve programmers from error-prone local-to-global subscript translations in data parallel applications.