java .net 框架_.net 框架浅析

  • Post author:
  • Post category:java


本章适合用我这种刚接触C#不久的同学=。=

1..net框架有两个主要组件:公共语言进行时CLR(Common Language Runtime)和框架类库FCL(Framework Class Library)

CLR(公共语言运行库,Common Language Runtime)和Java虚拟机一样也是一个运行时环境,是一个可由多种编程语言使用的运行环境。CLR的核心功能包括:内存管理、程序集加载、安全性、异常处理和线程同步,可由面向CLR的所有语言使用。并保证应用和底层操作系统之间必要的分离。CLR是.NET Framework的主要执行引擎。

FCL程序集,其中含 有几千个类型的定义,每个类型都提供了某种功能。

最下层蓝色部分是.NET Framework的基础,也是所有应用软件的基础。.NET Framework不是凭空出来的,实际上API,COM+,和一些相关驱动依然是它的基石。.NET Framework只不过是对这些前辈们进行了系统的封装和扩充,在这个过程中,吸取了Java框架的很多经验。关于Win32 API与.NET Framework API的对应关系,可以参考Microsoft Win32 to Microsoft .NET Framework API Map

除了蓝色部分以外,其他均为.NET Framework的主体。它是基于通用语言基础架构(Common Language Infrastructure,CLI)。

通用语言运行平台(Common Language Runtime,CLR),是对CLI这个架构在Windows平台的实现。

类库(Framework Class Library,FCL),所有在.NET能够使用的类库。分为两部分:

基类库Base Class Library(BCL) ,顾名思义,其中包含一些基础的类,如:IO,String,Net等等。它们可以直接使用或者被FCL中的其他类使用。

FCL中的其他类。这些类库基本上都是引用BCL,在这些类库的基础上做的扩充。如:Web Page is Unavailable,The Official Microsoft ASP.NET Site,Windows.Forms等等,它们是我们编写程序更加方便,专一。

公共语言规范Common Language Specification (CLS) 和公共类型系统Common Type System (CTS) ,是CLI的一部分内容,它们的目的是保证各种语言与.NET Framework的兼容性的。

例如:把C#中的int和VB中的Integer统一映射到System.Int32。

最顶层是各种语言,C#,VB,等等。

2. .net 的编译过程

C#语言要编程可以被CPU解析执行的代码需要两次编译:

第一次编译:将C#语言通过C#编译器编译成MSIL中间代码

第二次编译:将MSIL代码通过即时编译器(JIT)编译成CPU可以解析执行的代码,或者成为(平台专用代码)

IL为Intermediate Language,有时候也叫Microsoft Intermediate Language

中间语言使得在.Net中各种语言的方便交互成为了可能。

Java程序想要被CPU解析执行也需要两次编译:

第一次编译:将后缀名为java的文件通过Java编译器编译成后缀名为.class(字节码)文件

第二次编译:将.class文件通过Java虚拟机(jvm)编译成CPU可以解析的代码

参考资料:



版权声明:本文为weixin_30025473原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。