Eso se debe a que, debido a la fragmentación, las arquitecturas son diferentes, y la forma de unificarlos fue usando una capa de ejecución comun: java
Lamentablemente eso consume bastante más memoria y algo de recursos adicionales , pero esto ya estaba dicho, no es sólo porque estén mejor o peor...