We abstract future high-performance computing environments into four layers detailed below [9].
This is the typical graphical interface allowing manipulation at either metacomputer, or individual component level.
Portable flexible programming at some performance cost - illustrated by Java in applet mode
Offering a high-level language with few machine dependent features, and getting high performance--traditionally within about a factor of two of the peak performance possible on the particular algorithm--illustrated by coupled Fortran, C, C++, and Java.
Rarely used by application programmers or even those building (high level) tools. Clearly, allows user to obtain peak performance at the cost of a very inconvenient programming environment.
Levels c) and d) include the computationally intense parts of the problem, which can be implemented on appropriate servers. However levels a) and b) which we discuss in this section, are likely to be executed in the client machine/environment. We describe the current trends in software strategy [2], [6] as a shift from software built in terms of PC Windows, Macintosh, UNIX environments to a WebWindows basis, i.e., software built on the interfaces defined by Web servers and Web clients. This is, of course, a valid approach whether one is writing for a single stand-alone machine (running a Web server and client) or the entire worldwide network. In this sense, the use of Web technology for user interfaces is trivial--the user interface is not constrained greatly by the difficulties of high-performance computation, as it runs on the ``conventional'' client side and so can naturally use best client side technologies. Some examples of Web based user interfaces are:
We expect this type of interface development to continue and become the norm. However, we see a particularly important role for Java (and VRML) in terms of level b). Namely, Java seems an attractive language for building client side data analysis systems. These typically involve both computation and visualization--in which linkage, Java has unique capabilities. Thus, we expect a set of high quality Java applets (or compiled plug-ins) to be developed which support this analysis. Those applets will be used at level a) by the general user with the expert modifying the code of the applets (level b)) for customized capability. A good example of Java for scientific visualization is the work of Cornell [15] on an applet for teaching fracture mechanics. We depict the resultant, environment which essentially becomes a Java wrapper for code written in traditional languages and running on sequential, parallel or distributed computers. This use of Java is likely to grow rapidly as it requires modest changes to existing software and adds great value without changing the familiar programming paradigm. However, we see it as a natural Web ``seed'' that can grow into the more pervasive use of Java.