4

.NET 4.0 引入了对动态类型对象调度调用的新支持。据我所知,这涉及:

  • CLR 没有变化
  • BCL 中的新类型
  • 将新语法转换为新类型用法的新编译器

在 Java 领域,人们正在讨论向 JVM添加新的dynamicinvoke字节码,以便在中间语言抽象之后由 JIT 处理分派。

Java 方法得到了许多重要方面的支持。

这些似乎是两种根本不同的方法。各自的优点是什么,为什么两个阵营选择走不同的道路?我对这两种解决方案的灵活性和运行时性能特别感兴趣。两个虚拟机最终都试图实现相同的目标吗?

4

1 回答 1

2

保存中间语言指令集对于托管系统非常重要,因为它会使新应用程序与已安装的运行时不兼容。

例如,Sun 在引入泛型时避免更改,这就是为什么在 Java 中实现泛型是半生不熟的。同时,MS 为泛型引入了新的指令。

从理论上讲,为动态调用引入新指令为更优化的方法查找(例如内联缓存)开辟了可能性。

顺便说一句,.NET 4.0将包含CLR 版本,尽管 AFAIK 此版本更改将由更新的系统库引起。

于 2009-10-20T13:40:12.860 回答