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

2022-09-02 13:37:02

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

也许一个起点是,它们在各自的环境中(Java > JVM > Machine Code)(C# > CLR > IL)中基本上是一样的吗?


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

  1. 垃圾回收
  2. 装箱/拆箱
  3. 动态调试
  4. 泛型/模板
  5. 请随时建议其他区分两者的好主题。

@George Mauer - 这听起来很有趣:

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


答案 1

这应该是一个很好的线程。

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

相反,Java删除了泛型类型,并且JVM只能通过自动装箱它看起来是伪泛型的对象来处理对象。


答案 2

从这里。我说得再好不过了(好吧,除了火焰战争,这是一个没有火焰的地方:-))。

你好

通过发起一场火焰战争来回答你的问题似乎充满了危险,所以我会谨慎行事。

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

但是,这些“相似”区域中的每一个也都有许多相当大的差异,并且超出了简单的论坛帖子的范围来描述其中的大多数。

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


推荐