Issues in Building a Parallel Java Virtual Machine on Cenju-3/DE X. Defago and A. Konagaya This paper describes how a Java virtual machine can use the inherent concurrency of Java programs on a massively parallel processor machine (MPP) like NEC Cenju-3. An application written with the Java programming language has two different ways to introduce concurrency; threads and processes. While it is possible to introduce parallelism by using different processes, the granularity is likely to be coarse and applications would have to be written specifically for parallel machines or would lack flexibility, scalability and the level of parallelism would be very low. On the other hand, while most non trivial Java applications are already highly multi-threaded, the problem of locality of objects shared between threads makes it difficult to take advantage of the availability of many processors. Since the availability of multi-threaded applications is going to be extremely large, there is much to gain in being able to exploit the concurrency of such applications. This is what we try to address in this paper by describing the issues raised in the implementation of a parallel Java virtual machine for Cenju-3. This paper illustrates the use of low-level communications and remote DMA accesses in implementing a distributed shared memory for the Java virtual machine.