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
|