C-language supports one type of source code, one compiler and one type of binary format data, c-language source code can communicates with the c-compiler, compiler gives object format file, this file having c-language source code in the binary format and information about the operating system, object file can communicates with the one o/s directly. C-language is platform dependent.
The java language supports one type of source code, one compiler and one type of binary format data, java-language supports java-c compiler this compiler communicates with the java language source code gives class format data. class file having only binary format data doesn't having information about o/s, for executing class file in the various types of operating systems. we have to use java virtual machine(jvm) communicator java lang. is a platform independent.
csc is the sub-compiler in the .Net framework, this compiler communicates with the c#.net source code, csc compiler gives intermediate language format file.
Intermediate language format:
IL format having specific language types into the binary format, all IL formats communicates with the common language runtime compiler.
Common Type System(CTS):
Using cts we can convert different language data types into the common type, different data types having in the sub-compilers, common data types having in the CLR.
Common language Specification:
Using CLS we can convert different languages source code into the common source code, different languages source code having in the sub-compilers. common source code having in the CLR.
The MSIL format getting after communicating all sub-compilers with the CLR, MSIL having common type of data typesand source code, MSIL format can communicates with the various operating systems.
Just intime compiler:
JIT compiler is communicator between MSIL format and specific o/s, because of the JIT compilers the .Net technologies are platform independent.