next up previous print clean
Next: ... and disadvantages Up: Discussion Previous: Discussion

Jest's advantages

Jest's high-level, mathematical encapsulation successfully separates numerical analysis into its solver classes, scientific application into its application classes, and data structure into its vector classes. Essentially, it is that natural separation that sets Jest apart from more common optimization packages. The back-of-an-envelope designs of a researcher will usually translate directly to Jest's mathematical objects. Since the innovation will probably lie within a single area of expertise, such as a solver, or a new operator, a researcher will usually only need to program a single class. The new class can then be combined with Jest library items to build complex tests and examples. A small set of well-defined mathematical class interfaces ensures that such project-specific extensions are fully compatible with the entire Jest framework.

To help maintain Jest, its classes are accompanied by simple test routines. Furthermore, Jest includes a series of research-type examples that, due to our laboratory's reproducible research mechanism, are recomputed at the push of a button. To maintain Jest, we routinely and automatically execute all of Jest's test and example routines. Furthermore, the test and research cases complement Jest's Javadoc pages by offering a programmer illustrative examples.

In general, Jest's code is more readable than comparable C and Fortran implementations. On the numerical battlefield, when numbers are added and square roots are taken, Java is superior to C due to its lack of pointers and addresses. Here Java's readability is generally comparable to Fortran. On the abstract algorithmic level of solvers, Jest's mathematical objects are unsurpassed in conciseness and generality. Overall, as in every object-oriented language, a lot of dirty details, e.g., an array's parameters or input and output details, are hidden in Jest's objects.

For the future, I envision reproducible electronic documents that distribute scientific research on the World Wide Web. Reproducible research documents Schwab et al. (1996); Schwab and Claerbout (1996); Schwab and Schroeder (1995) organize an researcher's writings and his software implementation of his ideas into easily accessed and maintained packages. The online version of an electronic document, as shown in Figure 3, offers readers buttons that initiate the recomputation of the document's results.

 
idvi
idvi
Figure 3
Reproducible electronic document on the Internet. A Java DVI viewer, IDVI Dickie (1997), displays a TEX research document in a Netscape browser. The window at the bottom center helps a reader to navigate the IDVI viewer. The Action button at the bottom of the white page activates a Java menu applet (left next to the button) that permits a reader to recompute the document's result. The browser downloads the necessary Java byte code from the server and executes them on the reader's machine. The Java console at the top right shows the executed commands. Another button enables the reader to download the document's corresponding application package. The final result figure is displayed in the window at the bottom right.


view

Due to Java's security features, an electronic document implemented as a Java applet can be downloaded and safely executed by any standard Web browser. Thereby, Java enables us to combine a scientific article with its underlying software while avoiding the complications of traditional software installation and compilation. The resulting convenience and completeness of reproducible Web documents should foster collaboration among researchers and increase research efficiency. Jest currently contains Java applications. However, first experiments (Figure 3) show how Jest's application can be extended to Java applets and how they can be integrated into a reproducible Web document.


next up previous print clean
Next: ... and disadvantages Up: Discussion Previous: Discussion
Stanford Exploration Project
3/8/1999