最近学习了一些高级语言虚拟机的知识,在此对.NET平台和java平台做一个简单的比较。对java平台已经很熟了,所以此处只介绍.NET平台下的一些概念。
一、CLI
通用语言基础架构(Common Language Infrastructure,简称CLI)是一个开放的技术规范。
通用语言基础架构定义了构成.NET Framework基础结构的可执行码以及代码的运行时环境的规范,它定义了一个语言无关的跨体系结构的运行环境,这使得开发者可以用规范内定义的各种高级语言来开发软件,并且无需修正即可将软件运行在不同的计算机体系结构上。
通用语言运行库(CLR)则是微软对此标准(CLI)的实现。
二、对CLI的实现
Microsoft .NET Framework - 微软提供的面向Windows系统的实现,提供了各种各样的程序库,工具等。
Microsoft Silverlight - 微软提供的一个跨平台实现,能同时在Windows和Macintosh操作系统上运行。
.NET Compact Framework - 微软提供的面向便携式系统的商用实现。
Microsoft XNA - 微软提供给游戏开发人员使用的一个CLI,面向的是XBOX和Windows Vista。
Rotor - Microsoft Shared Source CLI(Rotor)微软开发出来的一个在Window,Mac OS X和FreeBSD上运行的一个CLI实现,但微软并没有授权用Rotor开发商业程序,只是一个学习工具。
Mono - 由Novell赞助开发的开源实现,它能够应用于Linux,Mac OS等多种操作系统。
dotGNU - dotGNU项目也是一个开源并且*的实现。
三、CLR
通用语言运行平台(Common Language Runtime,简称CLR)是微软为他们的.NET的虚拟机所选用的名称。它是微软对通用语言架构(CLI)的实现版本,它定义了一个代码运行的环境。CLR运行一种称为通用中间语言的字节码,这个是微软的通用中间语言实现版本。
四、.NET Framework vs. CLI vs. CLR
CLI是标准。
.NET Framework是对CLI标准的实现。
CLR只是.NET Framework里面的虚拟机的名字。类似jvm。
附上.NET平台与JAVA平台的比较:(图片来源)