下面是一位学计算机的人士对于.net的理解,我觉得写得浅显易懂,比喻形象。

所谓Java和.Net平台的根本是其VM(Virtual Machine,虚拟机)
Java平台的虚拟机就叫JVM(Java Virtual Machine)
在.Net平台上则叫做CLR(Common Language Runtime)

在使用虚拟机技术之前 一切都依赖于操作系统
你必须为一套程序分别开发多个版本
以对应Windows、Linux、Unix等操作系统

而虚拟机运行于操作系统之上
一个开发平台有多个虚拟机对应不同的操作系统
而基于该平台的程序运行于虚拟机之上
这样大家只需要开发一套程序的一个版本
就可以在虚拟机的帮助下运行在多个操作系统上

平台和工具的差异很容易理解
抽象地解释
比如你要把一颗钉子钉进一块儿木头里
我们都知道最快捷的方法是用锤子这个工具
你不用锤子 用其他的工具
例如用另外一块儿木头来敲钉子
或者直接将钉子对着地面敲都可以完成这项任务
但是完成的质量有高有低
而且工具的使用成本也不一样
如果用木板来敲的话 单次成本最低
但木板容易坏 总需要去找新的木板
用锤子的话需要花钱买锤子 但是不容易坏 可以长期使用
而且完成的质量最好 所以从长期来看 用锤子最合算
同理 开发工具也有质量好坏和成本高低的差异