Numerical Computing in Java
So Java not only will run anywhere but can be expected to get same answers everywhere
- As long as use of Native (C, Fortran) libraries and indeterminate concurrency controlled
Natural tension between performance (both in terms of speed and precision) and reproducibility
- Need to encourage more research into "reproducible algorithms" but support both goals
Java has particularly bad floating point performance due to
- As in all applications, immature compiler (JIT) technology
- does not exploit proprietary hardware features (extended precision, fused multiply add)
- does not allow well known compiler optimizations (associativity)
Solution requires "Change in Java Rules" and better compilers