While the JVM, being a virtual machine
, is a software construct, it's a model
) of a real piece of hardware.
With this in mind, it's interesting to note that J(v)M has an entirely stack
. There are no register
s available to the programmer.(This means that all operations have to access memory)
This is very much contrary to the present trends in CPU
where everyone's adding more
Now, if Java
were originally concieved of as the internet
/universal platform it's generally viewed as, the idea of basing everything on the stack model would make sense. Minimizing the number of registers used would allow a simple and fast implimentation, regardless of the number of available on the host platform.
However, Java was originally intended to be used for embedded
applications. Looked at in this light, it was a way of getting the simplicity and cost reduction of a RISC
design, without the cost and trouble of adding all those registers. (see cop out