I think it's because of Java.
Why is Minecraft so badly optimized? - 1
It isn't because of Java.
When you choose a language for performance benefit you always pay for it in terms of code complexity and debugging time. It is equally possible to write slow code in Assembler as in Java.
Performance benefits come from
a.) decreasing algorithmic time complexity
b.) changing out data structures.
Very rarely does anything else at all make a noticeable difference.
If you profile your code and see that a large portion of run-time is spent executing one hot loop, then you might optimize that loop the best you can. Every other attempt is a waste of time.
Who was it (maybe C. A. R. Hoare?) who said
"Premature optimization is the root of all evil"?
Without having the source code, I can't really tell you why the code is badly optimized. Maybe it _isn't_ badly optimized.
With all due respect to _Object, Java is in fact known to perform about 50 times slower than c++. In other words, the same code in c++ is about 50 times faster than in Java. This is because c++ can be statically compiled, and Java apps depend on a JVM. They use more resources and run slower. And java has this really nasty thing called garbage collection.
Java has come a long way, and with faster computers today this is not as much of a factor as it used to be, but at the end of the day, if you need performance, you are going to use c or c++, not Java.
There's a reason that drivers are written in c or c++, NOT java! And that reason is *performance*.