@InProceedings{dickens:javaio, author = {Phillip M. Dickens and Rajeev Thakur}, title = {An Evaluation of {Java's I/O} Capabilities for High-Performance Computing}, booktitle = {Proceedings of the ACM 2000 Java Grande Conference}, year = {2000}, month = {June}, pages = {26--35}, publisher = {ACM Press}, URL = {http://www.mcs.anl.gov/~thakur/papers/javaio.ps}, keywords = {parallel I/O, Java, pario-bib}, abstract = {Java is quickly becoming the preferred language for writing distributed applications because of its inherent support for programming on distributed platforms. In particular, Java provides compile-time and run-time security, automatic garbage collection, inherent support for multithreading, support for persistent objects and object migration, and portability. Given these significant advantages of Java, there is a growing interest in using Java for high-performance computing applications. To be successful in the high-performance computing domain, however, Java must have the capability to efficiently handle the significant I/O requirements commonly found in high-performance computing applications. \par While there has been significant research in high-performance I/O using languages such as C, C++, and Fortran, there has been relatively little research into the I/O capabilities of Java. In this paper, we evaluate the I/O capabilities of Java for high-performance computing. We examine several approaches that attempt to provide high-performance I/O---many of which are not obvious at first glance---and investigate their performance in both parallel and multithreaded environments. We also provide suggestions for expanding the I/O capabilities of Java to better support the needs of high-performance computing applications.} }