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. G i v en these signi cant 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 m ust have the capability to e ciently handle the signi cant I/O requirements commonly found in high-performance computing applications.While there has been signi cant research in high-performance I/O using languages such as C, C++, and Fortran, there has been relatively little research i n to the I/O capabilities of Java. In this paper, we e v aluate 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 rst 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.