公共语言运行时(CLR,Common Language Runtime)

公共语言运行时(CLR,Common Language Runtime)

转自:什么是公共语言运行时(CLR)

编译:编好程序选择生成时,从 源码编译到中间语言(IL),这个中间语言是.NET自已的一种语言格式,虽然它也是 EXE,但它并非直接可以执行的二进制代码,而是一种比源码更为紧凑的程序代码。
解释:软件执行的时候,系统会自动加载 .NET Framework 对中间语言形式的 EXE 进行解释运行。

它的过程分两步,首先是源代码到中间代码的“编译”,这一步严格说不是编译,只是将源代码翻译成了中间代码,但是形式上像是传统的编译—–生成了可执行文件。但是这个可执行文件并不是真正的可执行文件,需要.NET框架在你运行它的时候再及时翻译为CPU机指令,它的改进在于这个及时编译比传统的解释方式性能更好,因为程序中的指令不是每次运行都解释,而是在程序首次运行时一次性编译(解释),只要程序没有退出,解释的过程就不再发生。

当然,上面这些都是比较传统的程序代码执行方式,从Java语言开始,一种新的程序语言执行方式产生了,这就是“中间码+虚拟机”执行机制。这种执行方式,程序语言源代码需要被编译成一种特殊的中间码,这种中间码是不能直接执行的,它需要一个叫“虚拟机”的装置来管理和执行,可以是解释执行也可以是编译执行。因为“虚拟机”可以参与和管理程序代码的执行,因此解决了很多传统编译语言一些致命的缺点,如垃圾内存回收、安全性检查等。也是因为如此,.NET框架也采用了此种语言执行方式,这里管理和执行中间码“虚拟机”在.NET框架中就是公共语言运行时(CLR),它负责管理和执行由.NET 编译器编译产生的中间语言代码。

公共语言运行时的另外一个作用是可以轻松地实现跨平台。当然,条件是要在操作系统上安装.NET Framework,这个跨语言的原理是和Java一样的,安装了语言运行时的操作系统就可以识别和运行中间语言代码。值得一提的是,虽然微软自己并不提倡跨平台(跨平台会影响Windows操作系统的市场垄断),但现在已经出现了在Linux操作系统中运行和编辑.NET程序的平台,就是Mono平台。 该平台包括有C#编译器、公共语言运行时以及相关的一套.NET类库。Mono平台可使开发者开发的.NET应用程序不仅能在Windows上运行,也能在任何支持Mono的操作系统上运行,包括现有的Linux和UNIX操作系统。

关于公共语言运行时还要注意,. NET里面的CLR和Java里面的虚拟机JVM是不同的,我们说Java的虚拟机一般是解释执行的,而CLR是编译执行,是在应用程序第一次被调用时一 次性编译成机器码再执行,这样做的好处一个是尽可能的避免了解释执行所带来的效率降低的问题;另外可以做到充分利用本机资源,CLR可以针对本地的资源进 行优化编译,这个特性人们考虑可能在将来会使.NET代码的执行效率甚至超过C++,因为C++编译器是通用的,并没有照顾到不同计算机本地资源的不同。

.net framework

.net framework即为visual studio系列的微软产品。

公共语言运行库(CLR)可以将支持的各语言翻译成统一的中间语言,以供程序使用,达到多语言支持的效果。

公共语言运行库是 .NET Framework 的基础。.NET Framework 的设计方式保证它可以用于各种语言,包括 C++、C#、Visual Basic、F# 等,甚至一些旧的语言,如COBOL。为此,还推出了这些语言的 .NET 版本,目前还在不断推出更多的 .NET 版本的语言。所有这些语言都可以访问 .NET Framework,它们还可以彼此交互。C# 开发人员可以使用 Visual Basic 程序员编写的代码,反之亦然。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值