Unlike C++, Java ensures that floating point calculations always yield the exact same result, regardless of the underlying platform. This can degrate performance.
I am not sure if they meant that thought, in my opinion this is an advantage of Java.
Floating point calculations are only guaranteed to be platform independent when you use the 'strictfp' modifier.
One of the issues is, or used to be, data locality. Arrays can be all over the place. Lots of cache stalls that way.
There are tricks to deal with it, but I've never seen it in open source code. Might as well just use blas at that point.