Java的JVM和.NET的CLR的内部工作有什么区别?

Ste*_*man 19 .net c# java clr jvm

Java的JVM和.NET的CLR的内部工作有什么区别?

也许是一个起点,它们在各自的环境中基本相同(Java> JVM>机器代码)(C#> CLR> IL).


更新: 有几个人提到我试图涵盖的要点:

  1. 垃圾收集
  2. 装箱/拆箱
  3. JIT调试
  4. 泛型/模板
  5. 请随意提出其他可以区分两者的好主题.

@George Mauer - 听起来很有趣:

已经发布了一次,但这里是对c#首席语言设计师Anders Hejlsberg 的一系列采访.

Fly*_*wat 9

这应该是一个很好的主题.

CLR和JVM之间最大的区别之一是CLR与泛型的本机集成.

相反,Java会删除泛型类型,而JVM只能通过自动装箱看似伪随机的对象来处理对象.


Vin*_*vic 6

这里开始.我不能说得更好(嗯,除了火焰战争,这是一个无焰的地方:-)).

你好,

通过启动火焰战来回应你的问题似乎充满了危险,所以我会谨慎行事.

Java Runtime和公共语言运行时之间存在许多基本的技术相似之处,包括垃圾收集内存,中间语言(Microsoft IL与Java ByteCode),核心系统库以及对相当高级语言的支持,代码安全性以及部署.

然而,这些"相似"区域中的每一个也存在许多相当大的差异,并且超出简单论坛帖子的范围来描述它们中的大多数.

我建议询问有关各种运行时功能和组件区域(例如内存管理,编译,系统库,安全性等)的更具针对性的问题,然后我们可以提供更具针对性的响应(例如博客,技术文章)或者一些书籍).