ava has become increasingly popular as a general-purpose programming language. Current Java implementations focus mainly on the portability and interoperability required for Internet-centric client/server computing. Key to Java’s success is its intermediate “bytecode’’ representation, which can be exchanged and executed by Java Virtual Machines (JVMs) on almost any computing platform. However, along with that popularity has come an increasing need for an efficient execution mode. For sequential execution, just-in-time compilers improve application performance [4]. But high-performance computing applications typically require multipleprocessor systems, so efficient interprocessor communication is also needed, in addition to efficient sequential execution. As an OO language, Java uses method invocation as its main communication concept; for example, inside a single JVM, concurrent threads of control can communicate through synchronized method invocations. On a multiprocessor system with shared memory (SMP), this approach allows for some limited form of parallelism by mapping threads to different physical processors. For distributed-memory systems, Java offers the concept of a remote method invocation (RMI). With RMI, the method invocation, along with its parameters and results, is transferred across a network to and from the serving object on a remote JVM (see the sidebar “Remote Method Invocation”). With these built-in concepts for concurrency and distributed-memory communication, Java provides a unique opportunity for a widely accepted general-purpose language with a large base of existing code and programmers to also suit the needs of parallel (high-performance) computing. Unfortunately, Java is not yet widely perceived by programmers as such, due to the
[1]
Francis C. M. Lau,et al.
JESSICA: Java-Enabled Single-System-Image Computing Architecture
,
2000,
J. Parallel Distributed Comput..
[2]
Philip J. Hatcher,et al.
The Hyperion system: Compiling multithreaded Java bytecode for distributed execution
,
2001,
Parallel Comput..
[3]
Jim Waldo.
Remote procedure calls and Java Remote Method Invocation
,
1998,
IEEE Concurr..
[4]
Henri E. Bal,et al.
Performance evaluation of the Orca shared-object system
,
1998,
TOCS.
[5]
Assaf Schuster,et al.
Transparently Obtaining Scalability for Java Applications on a Cluster
,
2000,
J. Parallel Distributed Comput..
[6]
Alan L. Cox,et al.
Java/DSM: A Platform for Heterogeneous Computing
,
1997,
Concurr. Pract. Exp..
[7]
Jason Maassen,et al.
Efficient replicated method invocation in Java
,
2000,
JAVA '00.
[8]
Jean-François Méhaut,et al.
PM2: Parallel Multithreaded Machine. A Computing Environment for Distributed Architectures
,
1995,
PARCO.
[9]
Jason Maassen,et al.
An efficient implementation of Java's remote method invocation
,
1999,
PPoPP '99.
[10]
Michael Philippsen,et al.
More efficient serialization and RMI for Java
,
2000,
Concurr. Pract. Exp..
[11]
Geoffrey C. Fox,et al.
MPJ: MPI-like message passing for Java
,
2000,
Concurr. Pract. Exp..