Technical Overview of the CLR


As part of our computer science studies, we have used different machines to use programming languages; one of these machines is the Java Virtual Machine (JVM) that we used in our Programming Languages course with the LISP language Clojure.

Nevertheless, why do we use virtual machines? Well, we use them because they are a good alternative implementation paths for native compilers. Also, using this alternative can bring benefits related to:


  • Portability: the use of less translators to implement certain number of languages on different platforms.
  • Compactness: Code is smaller than the original source.
  • Efficiency: Adapt the behavior of a program and use knowledge in a better way.
  • Security: Deployment is easier.
  • Flexibility: Better typesafe metaprogramming concepts are created.


Even though we have used and proved that the JVM is a great resource, we have to admit that there are other good machines that can work even better than JVM. An example is the Microsoft .NET Common Language Infrastructure (CLI), designed to be a multi-language platform.


The thing that makes CLI better than JVM is its architecture, because it uses control threads. In addition, it has an instruction pointer (IP), an evaluation stack, a zero-based array of local variables, a methodInfohandle, a local memory pool, a return state handle, a zero-based array of incoming arguments and a security descriptor. As we can see, since the CLI storage locations are polymorphic, they are much better than the JVM storage locations.


We have reached a point where we can be able to say that, as a multi-language platform, the CLI is more powerful than the JVM, but this conclusion does not mean that Microsoft will stop researching and improving its product. Since strongest language implementors are being needed every single day, they will try to create a better solution or they might try to provide better ideas to use their product in a better way.

Comentarios