>>25
What about the information needed to even execute an assembly program? If you really care about absolute performance, you should design your own hardware to take advantage of as many engineering tricks as possible. Of course, that's impractical, and leads to a lot of wheel-reinventing. That's why the general methods of hardware computation have been abstracted, so that we can instead focus more on the actual problem of what computations need to be performed rather than how to physically perform them.
They key to computer science is abstraction. Hardware and software are designed in layers, but for some reason newer layers are frowned upon by the so-called "elite" who insist on solving problems within the existing framework rather than extend the framework with another layer. Java (and .NET) are just relatively new layers which abstract away memory management and safety, and which provide a rich library of useful operations. Most program's don't need manual or unsafe memory, and those that do can be written against a lower layer if needed.