Argonne National Laboratory

High-Performance File I/O in Java: Existing Approaches and Bulk I/O Extensions

TitleHigh-Performance File I/O in Java: Existing Approaches and Bulk I/O Extensions
Publication TypeReport
Year of Publication2000
AuthorsBonachea, D, Dickens, PM, Thakur, R
Date Published08/2000
Other NumbersANL/MCS-P840-0800

There is a growing interest in using Java as the language for developing high-performance computing applications. To be successful in the high-performance 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 their 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 deficiencies in the Java I/O API and improve performance dramatically. The extensions add bulk (array) I/O operations to Java, thereby removing much of the overhead currently associated with array I/O in Java. We have implemented the extensions in two ways: in a standard JVM using the Java Natice Interface (JNI) and in a high-performance parallel dialect of Java called Titanium. We describe the two implementations and present performance results that demonstrate the benefits of the proposed extensions.