Fundamental Change to Java Floating-point Credited to NIST-led Working Group
Recommendations of a technical working group chaired by ITL were instrumental in the adoption of a fundamental change in the way floating-point numbers are processed in Java. This change will lead to significant speedups to Java code running on Intel microprocessors like the Pentium.
Java is a network-aware programming language developed by Sun Microsystems. All Java programs run in a portable environment called the Java Virtual Machine (JVM). The behavior of the JVM is carefully specified to insure that Java codes produce the same results on all computing platforms. Unfortunately, a four- to ten-fold performance penalty has been experienced when emulating JVM floating-point operations on the Intel Pentium.
A proposed remedy developed by Sun and Intel was released for public comment in May 1998. Earlier in the year, ITL staff had participated in the formation of the Java Grande Forum (JGF), a consortium of industry, government, academia participants interested in the use of Java for high-performance computing applications. Ron Boisvert and Roldan Pozo of ITL's Mathematical and Computational Sciences Division were named co-chairs of the JGF Numerics Working Group. Participants in the Working Group include IBM, Numerical Algorithms Group, Visual Numerics, The MathWorks, Syracuse University, the University of Tennessee at Knoxville, and the University of California at Berkeley. The Working Group studied the Sun proposal, producing a counter-proposal which was much simpler, more predictable, and which would eliminate the performance penalty on the Pentium. Sun decided to implement the key provision of the Numerics Working Group proposal in Java 1.2, which was released this spring.
Tim Lindholm, Distinguished Engineer at Sun, one of the members of the original Java project, the author of The Java Virtual Machine Specification, and currently one of the architects of the Java 2 platform said:
"Our best attempts led to a public proposal that we considered a bad compromise and were not happy with, but were resigned to. ... The counterproposal was both very sensitive to the spirit of Java and satisfactory as a solution for the performance problem. ... We are sure that we ended up with a better answer for [Java] 1.2, and arrived at it through more complete consideration of real issues, because of the efforts of the Numerics Working Group."
The Working Group is now collaborating with Sun to improve the specification of elementary functions in Java, as well as to consider other changes to the floating-point model which would lead to performance improvements on IBM's PowerPC processor.