- It has as target multiple languages, in contrast JVM has as main target Java
- Managed multiple threads of control. CLI storage location are polymorphic, that means that there are 4 bytes or hundred of bytes. In contrast JVM are 4 bytes wide.
- CLI type system support a set of primitive types such as: object, bool, int8, float32, typed referece, etc. And as a main advantage over JVM, is the fact of the natural-size, these means that in JVM values of type long or double occupy to locations making difficult for compilers writers. Supports also classes, interfaces, arrays, delegates
- Besides CLI has polymorphic locations, it has also a little more polymorphic instructions (useful for compilers to generate MSIL code)
- CLI support tailcalls and JVM not.
- CLR provides built-in support for boxing and unboxing
According to the previous point, we can see that CLI has a better future that JVM, just because of the simple fact that it is easier to use for compiler writers. From my point of view for being a good execution environment we need to focus on the points, that at the beginning the authors mention, about why people look for an alternative implementation paths for native compilers that are portability, compactness, efficiency, security, interoperability and flexibility. Even though CLI seems to be the powerful and perfect one, they keep it making changes to be updated to the future necessities.

