CLI(Common Language Runtime)公共语言运行时
CLI是.Net框架中最基本的部分,代码的编译,安全的控管,链接库与执行文件的缓存等功能,都由CLI一手包办。
1.组件(Assembly)
程序源代码经过编译器编译后,会产生一个扩展名为.exe或.dll的文件,我们称之为组件,但这并不是真正可以直接有CPU执行的文件,因为编译器只是将源代码编译为一个中间码,就是我们说的MSIL(Microsoft Intermediate Language),这种MSIL必须经过二次编译后才会产生可执行文件。这一点和Java类似,Java源代码经过编译后首先生成字节码(.class文件),然后在通过JVM来解释执行。组件中还包括了资源(Resource)和元数据(Metadata)。
2.JIT编译器(Just-In-Compiler)
由于组件不是真正可执行文件,因此在执行之前必须进行二次编译,这部分工作就由JIT编译器来完成。JIT编译器将MSIL编译成真正的可执行的机器码(Native Code),如果组件引用了其他的类链接库,那么有类加载器(Class Loader)将所需要的类链接库一并加载编译。