I think I have to step in and say something regarding the performance of a program developed in Java.
Rydian you seemed to forget that Java codes are run in a Java virtual machine. Memory is handled by it and code bytes are compiled as x86 instructions in real time. These stuff do not merely increase the overhead when launching the program. Memory access and management do take up more resources for example.
You see all emulation programs do the same thing and they run a lot slower than on a real machine. Now imaging running a virtual machine within a virtual machine. Like running VirtualBox inside a a emulated Windows XP (with another VirtualBox).