chris said:
The Java HotSpot Virtual Machine.
Sometimes the -client and -server versions are spoken of as two separate
VMs.
As someone else already pointed out to you, "JVM" is the name of the virtual
machine that ships with the Java 2 Runtime Environment.
It doesn't really have one.
Wrong. The virtual machine is called the CVM and it *is* different from that
virtual machine which ships with the J2RE. They are two *different* virtual
machines with different minimum requirements for their environments. You
cannot replace the CVM with the JVM.
The RI that ships with the CDC devkit is
called
[J2ME] CDC HotSpot Implementation, alias CVM, alias Monty.
<
http://java.sun.com/products/cdc-hi/overview.html>.
This is, as is stated on that page, "a fully compliant Java virtual
machine"; that is, it complies fully with the JVM Spec.
Nobody said it couldn't comply with the JVM specification. I've said it's
not the *same VM* as that which comes with J2SE, which is what Huy claimed
and which I said was wrong. What exactly are you arguing?
No, they are at least 2 different VMs: Monty is said to share no code with
its bigger brothers.
Then you prove my point. Thank you.
(Why they're so proud of that I've no idea; but the
presentations from JavaOne made a big deal of it). Depending on how much
code is shared by the Client and Server HotSpot Virtual Machine(s), it may
or may not make sense to speak of 3 VMs.
But, you've apparently forgotten what *my* point was concerning this. Huy
claimed that CDC/PP was just "J2SE with some missing APIs". As you're now
showing, the CDC isn't J2SE: CDC and J2SE have completely different virtual
machines (which I said, but which you claimed was me being "too precise"
and creating a precision problem where there was none, but which you are
now showing was spot on when I said it).
They are all different, but they all implement the same spec
Uh uh. The CVM is implementing the CDC specification, which is not the same
specification as for the JVM in J2SE. They both meet the same requirements
for being *a* virtual machine but they are not both *the same* virtual
machine, which is what I have been saying.
(The Java
Virtual Machine Specification), and they could all answer to the name of
"the JVM" in some context.
"....in some context" should be the key to why you're having such a hard
time realizing your error.
Personally I prefer to talk of "the VM",
because (1) the Java part is usually understood, and (2) it's not a
trademark. Tradmarks make bad technical terms, because the owners are wont
to play Humpty Dumpty with them.
There is no difference between the VM spec for J2ME CDC and that for J2SE.
What is the minimum CPU requirement for both? What is the minimum memory
requirement for both? Shall I go on? They *do* meet different
specifications, even though both specifications comply with the same
minimum requirements for a *virtual machine* (i.e, in how they handle the
byte codes internall).
Call up the CDC specification. Then call up the JVM specification (i.e., the
virtual machine for the J2RE). Are they the same? What are their
differences? If there *are* differences, then you're *wrong*.
As far as the class libraries are concerned, if a given package is
implemented in a particular CDC profile then it is implemented with
exactly the same API as in J2SE.
So? That was done to leverage existing knowledge, and because it wouldn't
make any sense to create a whole new API for common domains. But, no
profile on the CDC is a subset of the core APIs; there are *intersections*
but there is no subset.
So if you proceed on the "completely and
utterly *WRONG*" assumption that CDC/PP is the J2SE minus some APIs your
applications will work;
Think so? Take a J2SE application and run it on the CVM. Were there any
problems? What were they?
your customers will be happy; revenue will flow,
shareholder value will be enhanced, and you will never know just how
"completely and utterly *WRONG*" your assumptions were.
Uh uh. You're now switching context. That a customer doesn't see the
difference doesn't mean there aren't differences. And, in this case, we
were talking about customers. It was one engineer asking other engineers
for information, and another engineer giving information dumbed down to
what you would give a non-technical user. Bad mojo.
Life is hard sometimes.
Yes, it is, especially when you're trying to justify being imprecise.