Here we should distinguish two ways of processing Java code. However one can also build native Java compilers and the workshop discussion indicated that with some restrictions on coding practice, one can expect native compiled Java to have a comparable performance to that from state of the art C or Fortran compilers. Note that Java lacks pointers and operator overloading and this aids compiler optimization. Zoran Budimlic from Kennedy's group at Rice, pointed out in his presentation that the complex user defined exception handlers allowed by Java, prevent several important optimizations and their use would need to be restricted in performance critical parts of compiled Java code. Note that Java can be an important simulation language in both parallel and sequential environments.
Applications exhibit many forms of parallelism.
Java and its associated Web infrastructure naturally supports thread based concurrency built into the language - this is perhaps not suitable for large scale data parallelism but can be used for overlap of communication and computation and similar functional parallelism. The Java applet mechanism supports object parallelism as seen in event driven simulation while coarser grain metacomputing can be addressed by emerging commercial concepts such as JavaBeans. Notice Java probably has superior support in these aspects of concurrency to other languages. Of course much parallel computing uses message passing and here Java has excellent intrinsic support. We are planning a follow-up workshop on June 21,1997 associated with the PPoPP conference in Las Vegas and again we will try to broadly involve the HPCC community in identifying critical issues.