Editorial: Java for computational science and engineering – simulation and modeling

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 on 16-17 December 1996. This was very successful, and a follow-up event will be sponsored by ACM in Las Vegas on 21 June 1997. 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 for 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 for 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 learn Java naturally 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 five areas. The first paper (‘Java for parallel computing and as a general language for scientific and engineering simulation and modeling’ by Geoffrey C. Fox and Wojtek Furmanski) is a general overview and the next three (‘Optimizing Java bytecodes’ by Michal Cierniak an Wei Li; ‘Optimizing Java: theory and practice’ by Zoran Budimlic and Ken Kennedy; ‘Technologies for ubiquitous supercomputing: a Java interface to the Nexus communication system’ by Ian Foster, George K. Thiruvathukal and Steven Tuecke) describe base Java technology from optimized compilation to linkage with communication infrastructure. The next two papers (‘Java simulations for physics education’ by Simeon Warner, Simon Catterall and Edward Lipson; ‘Using Java and JavaScript in the Virtual Programming Laboratory: a Web-based parallel programming environment’ by Kivanc Dincer and Geoffrey C. Fox) describe uses of Java in both science and computer science education. Then we have two papers (‘Java's role in distributed collaboration by Marina Chen and James Cowie’; ‘Java enabling collaborative education, health care, and computing’ by Lukasz Beca, Gang Cheng, Geoffrey C. Fox, Tomasz Jurga, Konrad Olszewski, Marek Podgorny, Piotr Sokolowski and Krzysztof Walczak) centred on the fascinating field of collaboration. The last six papers study the critical area of parallel and distributed computing in Java. These discuss world-wide computing (‘SuperWeb: research issues in Java-based global computing’ by Albert D. Alexandrov, Maximilian Ibel, Klaus E. Schauser and Chris J. Scheiman), large-scale software integration with Java servers (‘WebFlow – a visual programming paradigm for Web/Java based coarse grain distributed computing’ by Dimple Bhatia, Vanco Burzevski, Maja Camuseva, Geoffrey Fox, Wojtek Furmanski and Girish Premchandran) and mobility (‘Resource-aware metacomputing’ by Anurag Acharya, M. Ranganathan and Joel Saltz). These three distributed computing studies are contrasted with three on parallel computing: ‘Automatically exploiting implicit parallelism in Java’ by Aart J. C. Bik and Dennis B. Gannon on shared memory; ‘SPMD programming in Java’ by Susan Flynn Hummel, Ton Ngo and Harini Srinivasan on the SPMD style, and ‘Experiments with “HP Java”’ by Bryan Carpenter, Yuh-Jye Chang, Geoffrey Fox, Donald Leskiw and Xiaoming Li 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. © 1997 John Wiley & Sons, Ltd.