Java for numerical methods

R

Rob McDonald

I'm asking here instead of sci.math.num-analysis because I'd like
responses biased pro-Java instead of bias against.

If you Google around, you'll find that there was a lot of activity
surrounding the use of Java for numerical methods around ''99-'00.
There was active R&D into support libraries, high and low level.
Parallelization work, HPC, threading, MPI, etc. There were also
numerous research projects into language extensions, experimental
compilers, etc. There were conferences, working groups, active
mailing lists, etc.

It seems that it all came to an abrupt end. These libraries and
projects still exist, but they've gone stale. No updates for six or
seven years. Occasionally you'll find something small from 2003 or
so, but still.

A lot has happened to Java since 2000 (circa J2SE 1.2). The language
and the JVM's have progressed greatly. Computer hardware has
progressed as well.

So, the question is: What happened?

Rob
 
A

Arne Vajhøj

Rob said:
If you Google around, you'll find that there was a lot of activity
surrounding the use of Java for numerical methods around ''99-'00.
There was active R&D into support libraries, high and low level.
Parallelization work, HPC, threading, MPI, etc. There were also
numerous research projects into language extensions, experimental
compilers, etc. There were conferences, working groups, active
mailing lists, etc.

It seems that it all came to an abrupt end. These libraries and
projects still exist, but they've gone stale. No updates for six or
seven years. Occasionally you'll find something small from 2003 or
so, but still.

A lot has happened to Java since 2000 (circa J2SE 1.2). The language
and the JVM's have progressed greatly. Computer hardware has
progressed as well.

So, the question is: What happened?

Two comments:

1) I don't think it is that bad.

http://dsd.lbl.gov/~hoschek/colt/ last release sep 2004
http://commons.apache.org/math/ last release dec 2005

2) These algorithms does not change much. If they are implemented
in Java, then there are no need to do anything further. I belive
the Fortran and C programmers mostly use libraries written in the
1980's.

Arne
 
P

Patricia Shanahan

Arne said:
Two comments:

1) I don't think it is that bad.

http://dsd.lbl.gov/~hoschek/colt/ last release sep 2004
http://commons.apache.org/math/ last release dec 2005

2) These algorithms does not change much. If they are implemented
in Java, then there are no need to do anything further. I belive
the Fortran and C programmers mostly use libraries written in the
1980's.


I tried using Colt to replace invoking Matlab through a ProcessBuilder,
for computing truncated singular value decomposition. At least in my
test cases, for anything other than tiny matrices, the Matlab strategy
was faster. Part of the issue may be that Matlab implements a very wide
range of algorithms, including specific support for truncated SVD on
sparse matrices. The only way I could find with Colt was to compute the
full SVD and ignore the extra data.

From my point of view, there is still work to be done.

Oddly enough, the Matlab strategy is also logistically simpler, because
Matlab is installed on every computer on which I have any interest in
running my application, including computers I don't administer.

Patricia
 
H

H.L

Rob said:
I'm asking here instead of sci.math.num-analysis because I'd like
responses biased pro-Java instead of bias against.

If you Google around, you'll find that there was a lot of activity
surrounding the use of Java for numerical methods around ''99-'00.
There was active R&D into support libraries, high and low level.
Parallelization work, HPC, threading, MPI, etc. There were also
numerous research projects into language extensions, experimental
compilers, etc. There were conferences, working groups, active
mailing lists, etc.

It seems that it all came to an abrupt end. These libraries and
projects still exist, but they've gone stale. No updates for six or
seven years. Occasionally you'll find something small from 2003 or
so, but still.

A lot has happened to Java since 2000 (circa J2SE 1.2). The language
and the JVM's have progressed greatly. Computer hardware has
progressed as well.

So, the question is: What happened?

Rob


I have dealt with HPC as well as Java. I am not really biased against
Java, but it is inherently slow for several reasons. That's why I think
that it suits applications where computational speed is a factor rather
poorly.
 
M

Mark Thornton

Rob said:
I'm asking here instead of sci.math.num-analysis because I'd like
responses biased pro-Java instead of bias against.

If you Google around, you'll find that there was a lot of activity
surrounding the use of Java for numerical methods around ''99-'00.
There was active R&D into support libraries, high and low level.
Parallelization work, HPC, threading, MPI, etc. There were also
numerous research projects into language extensions, experimental
compilers, etc. There were conferences, working groups, active
mailing lists, etc.

It seems that it all came to an abrupt end. These libraries and
projects still exist, but they've gone stale. No updates for six or
seven years. Occasionally you'll find something small from 2003 or
so, but still.

A lot has happened to Java since 2000 (circa J2SE 1.2). The language
and the JVM's have progressed greatly. Computer hardware has
progressed as well.

So, the question is: What happened?

Rob

Work on concurrency continues (see
http://g.oswego.edu/dl/concurrency-interest/). The lack of efficient
complex numbers, convenient multidimensional arrays and operator
overloading have probably led quite a few to move on to other languages.

Mark Thornton
 
R

Roedy Green

A lot has happened to Java since 2000 (circa J2SE 1.2). The language
and the JVM's have progressed greatly. Computer hardware has
progressed as well.

So, the question is: What happened?

Numerical libraries don't need updates. The new language features
don't change the way you code low level arithmetic. I talked with
Bill Joy some years ago. He was keen on a complex type, actually a
generalization. When that comes, many libraries will be rewritten to
use it.

I think what happened is established libraries were ported to Java.
Once that happened there was nothing to do.
 
R

Rob McDonald

Thanks for all the input,

I wish I could believe it is just a solved problem and that activity
isn't needed.

There are some very mature libraries in C and Fortran which change
very little. However, they are very complete and have active user
communities.

The Java libraries I've found are incomplete (by reading their to-do
list and list of unimplemented features), and the communities are
ghost towns. None of them appear to have reached the maturity of a
product in deep-maintenance-mode.

I think a better comparison is C++ (OO, younger, language still
changing, etc). There are a great number of libraries under active
development, with vibrant communities.

Someone said language changes don't push library updates. I agree
that they do not require it, but they do give opportunity for
advances. The changes to the concurrency library in JSE5 are
significant enough to warrant revisiting the threading in existing
libraries, or possibly new libraries to exploit new techniques. There
is a C++ library (http://www.oonumerics.org/blitz/) which exists
purely to take advantage of advances allowed by the introduction of
Template programming in C++.

This of course ignores the simple fact that numerical methods is an
active research area. There are always new things to be done. It may
be that researchers in the field still choose to do their new work in
Fortran, C, and C++ rather than Java.

Rob
 
Joined
Jun 14, 2010
Messages
10
Reaction score
0
Actually, Numerical Method Inc. has just released their product - SuanShu - a java numerical library for numerical methods and numerical analysis. It attempts to rewrite a lot of algorithms from Netlib in Java for ease-of-use. You may download it from here: numericalmethod.com

There are many advantages of having a Java OO numerical library. For instance, Java world has the best IDE and collections of classes to use. It works with Python, Scala, etc. Java is also crossed-platform.
 
Last edited by a moderator:

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,067
Latest member
HunterTere

Latest Threads

Top