.NET is not a programming language but is a platform which provide environment to develop the application in any programming language whose language is supported by .NET to developer. .NET support 63 programming language in 63 programming language, out of which 11 languages has been developed by Microsoft and remaining 52 languages developed by other organization.
The components of .NET are,
- CLR (Common language runtime)
- CLS (Common language Specification)
- GC (Garbage Collector)
- JIT Compiler and
Base class library as in the following,
Figure: Component of .NET
CLR (Common language Runtime)
Common language runtime is a component of .NET that provide each and every thing which is required to generate the Native code.
CLS (Common language Specification)
As we know that each and every language has there own syntax to write the code, and one language does not support syntax of another language . But .NET support 63 programming language. So there is a common syntax to write the code which will get supported by all 63 programming language.
CTS(Common Type System):
Each and every language has there own data type system, and one language does not support data type of another language. But .NET supports 63 programming language. So there is a common Data type which will get supported by all 63 programming language.
JIT Compiler:
Jit stands for Just in time Compiler which interoperable in CLR .The responsibility of JIT compiler is compile the MSIL Code and generate Native code.There are 3 types of JIT Compiler,
- Normal Jitter
- Echono Jitter
- Pre Jitter
Normal Jitter: Normal jitter compile the selected line of code and it also contains the cache.
Echono Jitter: Echono jitter compile the selected line of code but it does not contains the cache.
Pre Jitter: Pre jitter compile the code from top to button but it does not contain any cache.
Garbage Collector: Garbage Collector is responsible for automatic memory management. As name is garbage collector it collect the object which is not reachable for long time. Memory is divided in 3 Generation as Gen 0, Gen 1,Gen 2 as in the following figure,
Figure: Generation in Garbage Collector
Newly created object store in Gen 0 and this process will repeat till Gen 0 is full. When Gen 0 will be full then there will be 2 Phases of process. In 1st phase of process it marks the object for reachable and unreachable in the memory. The object which is not reachable means the object has no use for long time and it is an unreachable object. In 2nd phase of process it remove the object which has marked unreachable and transfer the reachable object from Gen 0 to Gen 1 .This same process will follow to transfer the object from Gen 1 to Gen 2 . There are some methods which is used to remove unreachable object from memory.
Dispose method
Dispose() is used to remove the unreachable object from memory or object which has no references. Dispose () is called by Developer.
Finalize method:
Finalize() clean up the object from memory which has no references. Finalize () method get call by System.
Gc.Collect method: gc.Collect () method use to remove the object forcible from memory.
Base class library: This is collection of Class.
Ngen.exe:
Ngen .exe is a tool which is used to compile the MSIL Code and generate Native code. In .NET there is JIT compiler which is used to compile the IL code and generate the native code. But drawback with JIT compiler is the code which has compiled and used once cannot be reuses. So avoiding these drawback we use Ngen.exe which compile the MSIL code and generate native code. The code compiled by ngen.exe get stored in separate file known as image generation file. So this code could be reused when it is required to use.
Figure: Code Execution in .NET
The process of code execution in .NET is source code and get compiled by language compiler and generates MSIL code. MSIL code get compiled by CLR and it generates native code. The execution process is shown in above figure.
Managed Code: The code for which CLR is available after MSIL is known as Managed code.
Unmanaged Code: The code for which CLR is not available after MSIL is known as Unmanaged code.
Recap: .NET is not a programming language but it is a platform which provides the environment to write and run the application.
.NET supports 63 programming languages. The components of .NET are:
- CLR
- CLS
- CTS
- GC
- JIT COMPILER and
- Base class library.