There is a growing interest in using Java as the language for developing hi
gh-performance computing applications. To be successful in the high-perform
ance computing domain, however, Java must not only be able to provide high
computational performance, but also high-performance I/O. In this paper, we
first examine several approaches that attempt to provide high-performance
I/O in Java-many of which are not obvious at first glance-and evaluate thei
r performance on two parallel machines, the IBM SP and the SGI Origin2000.
We then propose extensions to the Java I/O Library that address the deficie
ncies in the Java I/O API and improve performance dramatically. The extensi
ons add bulk (array) I/O operations to Java, thereby removing much of the o
verhead currently associated with array I/O in Java. We have implemented th
e extensions in two ways: in a standard JVM using the Java Native Interface
(JNI) and in a high-performance parallel dialect of Java called Titanium.
We describe the two implementations and present performance results that de
monstrate the benefits of the proposed extensions. Copyright (C) 2001 John
Wiley & Sons, Ltd.