.NET is the framework for which we develop applications. It sits in between our application programs and operating system. Applications developed for .NET run inside .NET and are controlled by .NET. It supports both Windows and web applications.
.NET provides an object oriented environment. It ensures safe execution of the code by performing required runtime validations. For example, it is never possible to access an element of an array outside the boundary. Similarly, it is not possible to a program to write into another programs area, etc. The runtime validations performed by .NETmakes the entire environment robust.
Components of .NET
.NET framework has two main components. They are: 1. Common Language Runtime 2. .NET class library
Common Language Runtime
The Common Language Runtime (CLR) is the environment where all programs in .NET are run. It provides various services, like memory management and thread management. Programs that run in the CLR need not manage memory, as it is completely taken care of by the CLR. For example, when a program needs a block of memory, CLR provides the block and releases the block when program is done with the block.
All programs targeted to .NET are converted to MSIL (Microsoft Intermediate Language). MSIL is the output of language compilers in .NET . MSIL is then converted to native code by JIT (Just-in Time Compiler) of the CLR and then native code is run by CLR.
As every program is ultimately converted to MSIL in .NET, the choice of language is pure personal. A program written in VB.NET and a program written in C# are both converted to MSIL. Then MSIL is converted to native code and run. So, whether you write program in C# or VB.NET at the end it is MSIL all that you get.
It is believed VB6.0 programmers will migrate to VB.NET and C++ and Java programmers switching to .NET will prefer to use C# as it more resembles those languages.
For Java programmers, MSIL in .NET is same