Borneo Language Homepage


Borneo may be on the right track for Java.
--Guy Steele
New Models for Numerical Computing in the Java Programming Language
Java Grande - ISCOPE 2001 Conference, June 3, 2001


Borneo is a dialect of the Java language designed to have true support for the IEEE 754 floating point standard.

Map of Indonesian Islands The Sumatra Project The Borneo Language Specification Java from the source Bali

Abstract

The design of Java relies heavily on experiences with programming languages past. Major Java features, including garbage collection, object-oriented programming, and strong static type checking, have all proved their worth over many years. However, Java breaks with tradition in its floating point support: instead of accepting whatever floating point format a machine might provide, Java mandates use of the nearly ubiquitous IEEE Standard for Binary Floating Point Arithmetic (IEEE 754-1985).

Unfortunately, Java's specification creates several problems for numerical computation. Only a proper subset of IEEE 754's required features are supported by Java; useful IEEE 754 features are either explicitly forbidden or omitted from the Java specification. Java does not allow use of the IEEE 754 recommended double extended format on the x86. Using the double extended format often protects simple numerical formulas from floating point anomalies. Strict adherence to Java's floating point semantics leads to significant performance penalties on popular architectures, including both the x86 and PowerPC.

To address these problems, the Borneo language changes and extends Java so that all IEEE 754 features can be expressed and so that new numeric types can be easily created. Borneo allows either better hardware use than Java or (nearly) exact reproducibility while in all cases being predictable.

Summary

Borneo language specification

The Borneo specification document is approximately 130 pages and includes discussion of changes to Java the language, changes to the JVM, changes to core API's, and an appendix covering the history of programming language support for floating point computation.

Please send any comments on Borneo or corrections (even typos) to borneo@jddarcy.org.

Revision history

Borneo FAQ

Borneo in the News

Family Tree of Java Floating-Point Proposals

Family Tree of Java Floating-Point Proposals Borneo Language Homepage Improving Java for Numerical Computation RealJava The Evolution of Numerical Computing in Java Proposal to amend Java 1.2's floating point semantics Actual changes to floating point in Java 2 Java

Other Languages with interesting floating-point features

Floating Point Talks

Other Floating Point Related Pages and Documents


Joseph D. Darcy