Java for Computational Science and Engineering - Simulation and Modeling

Geoffrey Fox, 30 April 97

NPAC, Syracuse University, 111 College Place, Syracuse NY 13244-4100

We are pleased to present a set of papers discussing the role of Java in Science and Engineering Simulation. These were presented at a small workshop with 45 participants at Syracuse Dec 16-17, 1996. This was very successful and a follow up event will be sponsored by ACM in Las Vegas on June 21. The growing interest in this field is also supported by an email discussion list and other materials collected at the web site http://www.npac.syr.edu/projects/javaforcse.

Java and Web technology can be used in many areas of science and engineering computation. These include sophisticated user interfaces and coarse-grain integration of different modules in complex meta-applications. However also interesting (and controversial) is perhaps the use of Java as the language used to code the computationally intense parts of a scientific code. All these areas were discussed at the workshop with promising initial results and studies reported in each case. Again applications were described both for large scale event driven and time stepped simulations and also to smaller client side applets aimed at education. The appeal of Java as a simulation language includes its object oriented characteristics, elegant applet software distribution model and natural support of graphical user interfaces. There are also non technical reasons to think Java will be very important. In particular one expects children to naturally learn Java as part of their Web experiences. On entering University , I find it hard to believe that many will be willing to switch from Java to Fortran77 or Fortran90.

The papers in this issue fall into 5 areas. The first paper (CPE299) is a general overview while the next three (CPE 300,301,302) describe base Java technology from optimized compilation to linkage with communication infrastructure. The two papers (CPE 303,304) describe uses of Java in both science and computer science education. Then we have two papers (CPE 305,306) centered on the fascinating field of collaboration. The last six papers (CPE 307,308,309,310,311,312) study the critical area of parallel and distributed computing in Java. These discuss world-wide computing (CPE 307), large scale software integration with Java servers(CPE 308) and mobility (CPE 312). These three distributed computing studies are contrasted with three on parallel computing: CPE309 on shared memory, CPE310 on the SPMD style and CPE 311 on classic distributed memory data parallelism.

Currently it appears that Java promises the computational scientist programming environments which have both attractive user interfaces and high performance execution. An important purpose of the first workshop and the follow-up events is to get a broad input and study of the issues in this field so that we can guide the rapidly moving Java juggernaut to be maximally effective for scientific and engineering computation.