@TechReport{bonachea:java-io-tr, author = {Dan Bonachea and Phillip Dickens and Rajeev Thakur}, title = {High-Performance File {I/O} in {Java}: Existing Approaches and Bulk {I/O} Extensions}, year = {2000}, month = {August}, number = {ANL/MCS-P840-0800}, institution = {Mathematics and Computer Science Division, Argonne National Laboratory}, later = {bonachea:java-io}, URL = {http://www.mcs.anl.gov/~thakur/papers/javaio-journal.ps}, keywords = {parallel I/O, java, file system interface, pario-bib}, abstract = {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 Native 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.} }