Pep said:
Hey Oliver I'll make it easier for him.
vmware is an emulator because it "emulates" a intel based PC whereas a JVM
is not emulating another piece of architecture as it was conceived as a
virtual machine in the first place, except that I suppose you could
possibly say that it is emulating a theoretical physical platform
Yes, that's the position I'm taking: That the JVM is emulating a
"theoretical platform" [1]. I don't know what definitions Roedy is using,
but for me, if you have to data that semantically represents instructions
for a computer of some sort, and you have to apply transformations to that
data before actually sending it to the host computer, then emulation is
occuring.
So when you're executing an EXE file on the Windows architecture, the
machine code is just being sent directly to the CPU, with no transformation;
hence, no emulation. If you want to "run" your favorite SNES game, and you
use a process, such as ZSnes, to translate the op codes for the SNES ROM
into instructions which your Intel x86 processor can understand, then there
is emulation going on.
The Bytecode needs to be transformed before it can run, so I claim that
emulation is occuring when you run a Java program using a JVM.
As for the argument of "it's not an emulator if the thing it 'emulate'
doesn't exist yet", first of all see [1], and second, consider this:
Researchers are exploring the power of quantum computers. For example, we're
relatively confident that they are not more powerful than Turing Machines,
but there are still some open questions. Of course, we don't actually HAVE
quantum computers yet, but we can emulate their behaviour for small
programs. I think most people will still call this "emulation", even though
the platform being emulated doesn't exist (yet).
- Oliver
[1] Note that supposedly there do exist actual physical chips that can run
bytecode directly. I had a discussion about this recently somewhere on
usenet, but I can't remember where. So this platform might not be as
"theoretical" as some people claim. Upon request, I suppose I could do a
google search to find the thread, though interested people could do the
same.