When an instruction is coded in Java, it needs to travel around several layers, and that obviously means more time.
Several programmers are timing the performance of Java and they believe that it could reach in some situations a speed 70% slower than other languages like C or even C++. These last ones are normally used to code operating systems, high performance applications, or Java itself.
Java has an advantage, because is operating system independent. Anyway, with a different approach, the benefits of Java in that aspect are not clearly defined. Why operating systems don't establish a standardization avoiding that crazy quantity of computational resources lost by means of Java or other solutions to avoid different formats for the same assembler instructions?
A compiler can be treated like a virtual console. With a standardized format for executable files there's no need for virtual consoles that create layers inside others... not a few: BIOS, kernel, drivers, operating system functions and user interface. Each one with several steps of course, meaning slower applications, more memory consumption and with them, more electricity wasted.
It makes some areas of software engineering an example of how is possible to mitigate the considerable processing power of current devices, making each instruction to travel much more than necessary, losing energy, time and making users' life more problematic and at the same time more profitable.
Some people make the joke about the logo of Java because when you code in Java, is so slow that you need to take a coffee in between, trying to fulfill your time waiting. Cozier, simpler for the programmer, the final product will be slower and will consume more resources in general.
Actually is being used in billions of devices, and we hope that in the future these performance issues will be solved. Meanwhile, the processors are tamed with a big weight... Java makes them drive in zigzag for a straight road.