Technical Overview of the CLR

Before writing this week's entry, I decided to include and image of a CLR representation or diagram. Unfortunately, the first thing I got when searching CLR in Google was this mineral deposit remover. Probably this is irrelevant to the post, but it was funny. Probably not as funny as Erik Meijer and Jim Miller, authors of "Technical Overview of the Common Language Runtime".


Having said this, it is time to talk about JVM vs CLR.


JVM is an environment that executes Java programs. The cycle consists that Java programs are compiled into an intermediate language called byte code, then any program compiled into byte code can be executed on any platform that has a JVM installed on it. Have you already notice the power of this? well, if you do not notice, this makes Java software compatible with many different computing platforms, so it is a very powerful feature!

In the other way, CLI a platform-independent development system from Microsoft that enables programs written in different programming languages to run on different types of hardware. The CLI includes the Common Type System (CTS) and Common Language Specification (CLS). No matter which programming language they are written in, CLI applications are compiled into Intermediate Language (IL), which is further compiled into the target machine language by the Common Language Runtime (CLR) software.


As you can see, these 2 technologies have very cool features, but if you read carefully the sentences that I put in bold, then you are going to notice the key difference of CLI: many programming languages. Let me explain this clear difference having in mind the information that I read in the article, first, JVM does not provide encoding type-unsafe this is: pointers and unsafe type conversions, also in the JVM all storage locations are 4 bytes wide, in the CLI are polymorphic, this means that the wide could be 4 bytes or hundreds of bytes, CLI has many features that are things that JVM does not have, I must say that it is a clear competitor and a clear solution to the JVM problems, because, as I said before, JVM doesn't provide features according to the reading that gives a solution to encode type-unsafe features like pointers, tagged pointers, unsafe type conversions, function pointers, lexical closures, and more, I must say that CLI it is a complete solution for these kinds of problems.

Comentarios