chris said:
Come off of what, exactly? Being precise? You said that Sun would have to
change "change every occurrence of JVM to read 'JVM, CVM, KVM, or any
compliant blah blah blah', which would make for pretty turgid prose." and
the best you've come up with is a footnote on a link that says, basically,
"for these pages, the term JVM refers to any virtual machine". That's
hardly showing the JVM is a generic term, mate. JVM refers specifically
(i.e., in technical papers) to the virtual machine that ships with the J2RE
and J2SDK. In the VM specification for core Java it says "[t]his book
specifies an abstract machine. It does not document any particular
implementation of the Java virtual machine, including Sun
Microsystems" (chapter 3) to let you know that *there* they're using the
term "JVM" in a *different* sense than normal, which is to refer to the VM
in J2RE.
From <
http://java.sun.com/docs/>:
** As used on this web site, the terms "Java virtual machine" or "JVM"
mean a virtual machine for the Java platform.
So JVM is an acceptable shorthand for "a virtual machine for the Java
platform".
You forgot to mention that the above quote is a footnote to the link
referring to the Java virtual machine specification page. Did you happen to
go read what was being linked to with the above? Chapter 3 is interesting,
since in *that* place they refer to a generic Java virtual machine, which
they refer to *there* as "the JVM". Also look at the part where it says,
"This book specifies an abstract machine. It does not document any
particular implementation of the Java virtual machine, including Sun
Microsystems'" (chapter 3 intro). IN THAT PLACE they are using JVM and Java
Virtual Machine as short hand for any virtual machine, and they *tell* you
that it's being used different in the specification handbook.
Now, go take a look at what the name of the virtual machine that ships. What
is its designation? The JVM.
The first prototype implementation of the Java virtual machine, done at
Sun Microsystems, Inc., emulated the Java virtual machine instruction set
in software hosted by a handheld device that resembled a contemporary
Personal Digital Assistant (PDA). Sun's current Java virtual machine
implementations, components of its JavaTM 2 SDK and JavaTM 2 Runtime
Environment products, emulate the Java virtual machine on Win32 and
Solaris hosts in much more sophisticated ways. However, the Java virtual
machine does not assume any particular implementation technology, host
hardware, or host operating system. It is not inherently interpreted, but
can just as well be implemented by compiling its instruction set to that
of a silicon CPU. It may also be implemented in microcode or directly in
silicon.
So the "JVM spec" is not a specification for some particular existing
piece of software, it is a spec for a whole family of implementations,
present and future.
Did you read chapter 3 by any chance?
That includes software-only VMs such as Creme, CVM,
IKVM, Jamaica, JamVM, Jaos, JC, Jikes RVM, Jupiter, J9, JBed, Kaffe,
Kissme, KVM, Mika, ORP, PERC, SableVM, Wonka, etc., mixed
software/hardware solutions such as the one we are currently working on
together with Quest Innovations, and the various hardware bytecode engines
that have been made. And of course it includes the "Hotspot Client VM",
"Hotpot Server VM", amd all the other implementations Sun have shipped in
various JREs.
Apparently, you didn't. They tell you *in the book you're citing* that in
*that book* they're using the term JVM to refer to no specific
implementation. Why? Because they're giving you the overview of the virtual
machine's manner for handling the byte codes produced by the Java compiler.
This isn't *that* difficult to understand, really. This book even tells you
that this, if you read it.
In fact the only reasonable interpretation of "the JVM" is "all of the
above".
No, it's not. But, you'd have to take the time to read it first to realize
what is being said rather than assuming your conclusions.
Stop confusing specifications with implementations, and stop trying to
invent precision where none exists. It gets annoying.
Tell me, what is the designation for the virtual machine that ships with the
J2RE? Then tell me, what is the designation for the virtual machine that is
defined by the CDC? Then tell me if they're the same virtual machine, please?
Point: If they are not the same, then Huy's whole statement is factually wrong,
despite the hoops you may be jumping through now to claim that "JVM" refers to
the CVM and that by claiming such claiming that CDC/PP is the J2SE minus some
APIs, which is completely and utterly *WRONG*.