In this report the performance of Java has been compared with that of Fortran 90 and C on two benchmarks of particular interest to scientific and engineering applications. It was found that in comparison with F90 and C, the I/O and compute performance of Java varies from 30% slower to about 3 times slower, depending on the platforms and the compilers (and the JVMs). The best relative performance is achieved on a Pentium II, where it was found that the IBM Java (Version 1.3) yields code that is about 30-40% slower in computing and I/O performance. Given the special advantages of Java, we felt that this slightly inferior performance of JAVA may be acceptable for many applications. In any case the performance of Java seen in this work is certainly a big improvement over the situation only 1-2 years ago when it was generally perceived that Java could only achieve, say, 20% the speed of Fortran and C.
A number of issues make it difficult for Java to be used in large scientific and engineering applications, these include the lack of efficient multidimensional array, the lack of complex number support, no operator overloading, inability to take advantage of fused multiply-add and associativity of operations in compiler optimizations, the lack of a Math Library that produces the same results on all Java platform, and the difficulties in interfacing Java with other languages. There is currently many activities to address these issues. These include some closely related/intersected forums and activities, such as the Java Grande Forum (http://www.javagrande.org), the JNT (Java Numerical Toolkit) project (http://math.mist.gov/jnt), which includes proposals for Java BLAS interface, and the JNL (Java Numerical Library, http://www.vni.com/products/wpd/jnl). It can be expected that compiler technology and support libraries will continue to improve. We believe we are closer to a time when new scientific and engineering applications could equally well be written in Java to benefit from its advantages, without the need to worry about the loss of performance.