next up previous contents
Next: Communication in Parallel Programming Up: Java for Parallel Programming Previous: Java for Parallel Programming   Contents


Java for Scientific Computing

The attractiveness of Java for scientific computing is being encouraged by bodies like Java Grande [#!JAVAGRANDE!#]. The first meeting of the Java Grande Forum was held at ACM 1998 Workshop on Java for High-Performance Network Computing on February 28 and March 1, 1998, in Palo Alto, California. The Java Grande Forum is motivated by the notion that Java has the potential to be a better language than previous languages such as C and Fortran for developing large science and ``Grande'' applications, particularly on distributed and high-performance computers. A Grande application is an application of a large scale nature, potentially requiring any combination of computers, networks, I/O, and memory. Examples may include, financial modeling, aircraft simulation, climate and weather, satellite image processing and earthquake prediction.

The major goal of the Java Grande Forum is to develop community consensus and recommendations for either changes to Java or establishment of standards for Grande libraries and services. The forum is open and operates with a mix of small working groups, public dissemination and requests for comments on its recommendations. Two major working groups were initially defined: the Numerics Working Group and the Applications and Concurrency Working Group.

The goal of the Numerics Working Group is to assess the suitability of Java for numerical computing, and to work towards community consensus on actions to improve the language and its environment, in particular for applications with significant requirements for floating-point computation. In its initial assessment of Java, the working group has focussed on five critical areas where improvements to the Java language are needed:

Lightweight classes and operator overloading provide key components to proposed improvements for complex arithmetic and multidimensional arrays. Information about the Numerics Working Group activities is maintained at the JavaNumerics Web page at http://math.nist.gov/javanumerics.

The second major working group is Applications and Concurrency group. The activity of this group is particularly relevant to this dissertation. The goal of the group is to assess the suitability of Java for parallel and distributed computing and so-called problem-solving environments (applications), and to work towards community consensus on actions that can be taken to improve the language and environment. An important focus has been on the Java-specific frameworks designed to support concurrent and high-performance computing methodology.

Focusses of interest in the group include:

Critical JDK issues are highest priority issues, mostly related to performance of RMI and object serialization. Other parallel and distributed computing issues include the availability of MPI-like message passing facilities for programming networks of computers.

Some time after initial Java Grande working groups were defined, a Message-Passing Working Group was formed in response to the independent development by several groups of Java APIs for MPI-like and PVM-like systems. An immediate goal was to discuss a common API for MPI-like Java libraries. An initial draft for a common API specification was distributed at Supercomputing '98 [#!MPIPOSITION!#]. Since then the working group has met in San Francisco and Syracuse, and a Birds of a Feather meeting was held at Supercomputing '99. Minutes of meetings were published on the java-mpi mailing list and are available at http://mailer.csit.fsu.edu/mailman/listinfo/java-mpi/. To avoid confusion with standards published by the original MPI Forum (which is not presently convening) the nascent API is now called MPJ. Work reported in this dissertation has been significant input to this Message-Passing Working Group.

Information about the Java Grande Applications and Concurrency Working Group activities can be found at http://www.javagrande.org.


next up previous contents
Next: Communication in Parallel Programming Up: Java for Parallel Programming Previous: Java for Parallel Programming   Contents
Bryan Carpenter 2004-06-09