Have you not wondered why we have Java and .NET? They don't substantially reduce development time, and increase system resources required; they are clearly intended to reduce the minimum skills that a programmer should have. There are many such innovations that do not benefit the end user in any way. We have microcode running inside the chip to build its instruction set; then we divide the machines into fragments using virtualization; run an operating system on it; then create another virtual environment using Java or .NET. How many layers do one need to build?