Friday, September 23, 2011

Framework and CLI Specification



CLR and JVR is a Framework.
Framework => under platform independent language like java and .net the compiled code is executed under the control of a special software known as Framework , which will mask the functionality of an OS and makes the code executable under its control.
In case of dependent language machine code is execute under the control of OS and makes the code to execute under its control.
In case of dependent language machine code execute under the control of OS.

Intermediate code which executes under the control of framework enjoy the following features.
  1.       OS Independency
  2.       Security.
  3.       Automatic memory management.
Because of the benefit we get while executing the code under framework , we refer to intermediate code as managed whereas machine code is unmanaged.
DEVELOPMENT OF .NET FRAMEWORK :- The development of .net framework has been started in the let 90’s origin at the under the name NGWS (next generation windows services).
To develop the framework is set of specification were prepared known as CLI specification (Common Language Infrastructure).
CLI specifications are open specification that are standardized under ISO (International Standard Organization) and ECMA (European Computer Manufacturers Association).
CLI Specification: - CLI specification focuses on FOUR major areas.     
  1.      CLS - Common Language Specification
  2.      CTS - Common Type System 
  3.      BCL - Base Class Library
  4.      VES - Virtual Execution System
CLS -> A set of base rules are the high level .NET languages has to adopt to interoperate with each other most importantly after compilation all the language should generate the same code known as CIL.
Q. Way Cant all OO languages interoperate?
Ans. 1. Mismatch in Code.
2. Mismatch in data type system.
CTS -> According to CTS the data type system adopted in all the .net languages should be uniform I.e. size of the relative types should be same between the all languages.

Because every .net language is derived from an existing language the names of the type differ from language to language but after compilation any type used as any language get converted to IL type.
As all the types used in any language finally gets converted into IL types in CIL while consuming CIL code from any language that gets presented in the language understandable format from where we are consuming it.

CLS and CTS have the foundation for language interoperability, which is possible between .net languages.