I’ve been reading "Professional .Net Framework 2.0" wherein .net CLR is mentioned as a virtual machine. This doesn’t make sense to me. What are the criteria for making such a determination? Why is it necessary for there to be virtual machines on many development platforms? Is it possible to develop an object-oriented native framework as powerful as .net?