Re: viability of java for sci computing

Hi John,

> Recently an article in EE Times (8/31/98 and forwarded to me) entitled
> "Java cited as weak brew for tech apps" poured cold water on the future
> of java for technical computing. The article is well written and
> informative. The issues were non-issues to me, but my client is
> concerned. The claim is that "Java falls short in its handling of
> floating-point calculations, arrays and complex numbers." James Gosling
> said they take these issues seriously and intend to address them. They
> will initially permint use of extended floating point, but none of the
> other issues will recieve immediate attention from Sun. 
> 
> Anybody care to comment? There are other critical issues that Sun is
> addressing that make a world of difference to me.

The article you refer to is available from 

  http://www.eet.com/news/98/1024news/java.html

It refers to proposals from the Java Grande Forum

  http://www.npac.syr.edu/projects/javaforcse/javagrande/

including Jack Dongarra's criticisms that Java lacks a built-in complex
type, criticisms of the multidimensional array facilities in Java, and
comments from William Kahan criticizing Java's floating point.

James Gosling addresses these and other issues at

  http://java.sun.com/people/jag/FP.html

In particular, he points out that the obvious implementation of a
complex class can be optimized to give the same performance and ease of
use as for Fortran, if operator overloading is added.  He then discusses
the issues around operator overloading and proposes that it be added to
a future version of the language.

We have corresponded with some participants in the Java Grande Forum on
their desire for better multidimensional array facilities in Java, and
have recommended that they consider the ucar.multiarray approach before
calling for changes to the Java language.  The design has the following
advantages:

 - a well-designed set of interfaces for multidimensional array data
   access;
 - composable "index maps" that make it easy to clip, decimate, flatten,
   flip, slice, and transpose multiarrays using index mapping functions,
   without copying the array values;
 - several concrete implementations of the MultiArray interface that
   wrap ordinary Java arrays or that provide more efficient storage.

For more information, see the ucar.multiarray javadoc documentation,
available from

  http://www.unidata.ucar.edu/packages/netcdf/java/

As for Kahan's remarks, he has made a career of criticizing the floating
point facilities and implementations of computer languages and hardware
floating-point implementations for the last twenty years.  He's
acknowledged to be the leading expert on floating-point (he won ACM's
prestigious Turing award in 1989), but he definitely has an agenda: to
make sure none of the features of the IEEE 754 standard fall into
disuse, which might lead to their atrophy and omission from future
languages, hardware, or floating-point standards.  His paper "How Java's
Floating-Point Hurts Everyone Everywhere" (available from
http://http.cs.berkeley.edu/~wkahan/JAVAhurt.pdf) proposes a new
language, "Borneo", that adds full support for IEEE 754 and operator
overloading.  The current (130 page) specification is available online,
from http://www.cs.berkeley.edu/~darcy/Borneo/.

--Russ
_____________________________________________________________________

Russ Rew                                         UCAR Unidata Program
russ@xxxxxxxxxxxxxxxx                     http://www.unidata.ucar.edu