lol - this one still going!! I actually agree with a few different points in this discussion...

Some interesting reading here ... .Net vs Java

From the above link...
VES - Virtual Execution System

Virtual Execution System (VES), is more or less equivalent to the JVM (Java Virtual Machine).

VES loads, links and runs the programs written for Common Language Infrastructure contained in Portable Executable (PE) files.

Virtual Execution System (VES) fulfills it's loader function by using information contained in the metadata and uses late binding (or linking) to integrate modules compiled separately, which may even be written in different languages.

And again...
JIT Compilation

Before Intermediate Language (IL) can be executed, it must be converted by a .NET Framework Just In Time (JIT) compiler to native code, which is CPU specific code that runs on the same computer architecture that the JIT compiler is running on.

Microsoft's designers insist that the runtime never interprets any language, it always executes native code, only conversion to native form may be deferred. Even the scripting languages like VBScript are now compiled and executed!


So yes - MadHatter is right in that CLR doesn't interpret anything in the way the JVM does. I can totally understand the technical argument you are making...

But, to be honest - they have enough in common for me to not split hairs about (Garbage collection, JIT, yada yada).