I know Microsoft .Net has the CLR while java has the Hotspot VM for JIT compilation. Are there any differences between them in terms of how they work and how the code is generated?