黑马程序员技术交流社区

标题: 关于公共语言运行时CLR的运行谁能帮我理解? [打印本页]

作者: 吴泉水    时间: 2011-12-12 12:49
标题: 关于公共语言运行时CLR的运行谁能帮我理解?
本帖最后由 吴泉水 于 2011-12-14 11:39 编辑

它的功能与运行机制?
作者: 王立磊    时间: 2011-12-12 14:21
clr其实就是一个与机器打交道的一种运行机制!!.net程序运行的步骤如下:C#程序编译成——>IL然后在clr上运行——基于机器码!
作者: 董伟    时间: 2011-12-13 16:26
Common Language Runtime   .NET提供了一个运行时环境,叫做公用语言运行时(Common Language Runtime),是一种多语言执行环境,支持众多的数据类型和语言特性。他管理着代码的执行,并使开发过程变得更加简单。这是一种可操控的执行环境,其功能通过编译器与其他工具共同展现。   
    依靠一种以运行时为目标的编译器开发的代码叫做可操控代码。   
    元数据:为了使运行时环境可以向可操控代码提供服务,语言编译器需要产生一种元数据,它将提供在使用语言中的类型、成员、引用的信息。运行时环境使用元数据定位并载入类,在内存中展开对象实例,解决方法调用,产生本地代码,强制执行安全性,并建立运行时环境的边界。   
    可操控执行的含义:对象在执行的过程中完全被运行时环境所控制。运行时环境提供以下服务:自动内存管理、调试支持、增强的安全性及与非可操控性代码的互操作性。条件:1、选择以运行时为目标的语言编译器,如VB、C#;2、在组件的输出类型中使用CLR要求的语言特性。
作者: 小石    时间: 2011-12-13 18:30
CLR包含两个组成部分:CLS(公共语言规范)和CTS(通用类型系统)
CLS是一种最低的语言标准,制定了一种以.NET平台为目标的语言所必须支持的最小的特征,以及该语言和其他语言之间实现互操作性所需要的完备特征。
CTS用于解决不同语言的数据类型不同的问题。
.NET编译原理:

作者: liuyinggzu    时间: 2011-12-14 23:31
.NET Framework的核心是其运行库的执行环境,称为公共语言运行库(CLR)或.NET运行库。通常将在CLR的控制下运行的代码称为托管代码(managed code)。
但是,在CLR执行编写好的源代码之前,需要编译它们(在C#中或其它语言中)。在.NET中,编译分为两个阶段:
  1、把源代码编译为Microsoft中间语言(IL)。
  2、CLR把IL编译为平台专用的代码。
  这个两阶段的编译过程非常重要,因为Microsoft中间语言(托管代码)是提供.NET的许多优点的关键.
.NET Framework是架构在Windows平台上的一个虚拟的运行平台,你可以想象将最下层Windows换做其他的操作系统,例如说Linux, 一样可以实现使用符合CLS(Common Language Specification, 通用语言规范)的.NET语言(VB.NET、C#、JScript.NET等)来创建ASP.NET或Windows Form(可能会叫Linux Forms)应用程序的功能,这其实就是Mono计划要实现的功能。所以可以这么认为,理论上,C#是一种可以跨平台的语言,这很象Java。
  C#另一个比较象Java的地方是,它也是一种(特殊意义上的)语言,同Java一样,C#编写的程序代码也是先通过C#编译器编译为一种特殊的字节代码 (Microsoft Intermediate Language, MSIL,微软中间语言),运行时再经由特定的编译器(JIT编译器)编译为机器代码,以供操作系统执行。
  不仅是C#语言,所有.NET语言(将会包括我们常用的几十种现代的编码语言)都可以编写面向CLR的程序代码,这种代码在.NET中被称为托管代码(Managed Code),所有的Managed Code都直接运行在CLR上,具有与平台无关的特性。
  解释性的语言很安全,并且可以通过他的运行平台为其赋予更多的功能,例如自动内存管理,异常处理等。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2