Why is MTL written in C++ and not Java?
The Java language was developed for certain particular purposes. Scientific computing was not one of those purposes. Generic programming was not one of those purposes. To offer sufficient performance for scientific computing, Java must be compiled to native object code, not byte code. To provide genericity, the Java language would have to be changed to include operator overloading and templates. Hmm. Templates, overloading, compilation to native object code. On top of all that, Java has some problems with its floating point model.