.NET 4.0引入了对动态类型对象的调度调用的新支持.据我所知,这包括:
>没有改变CLR
> BCL中的新类型
>将新语法转换为新类型用法的新编译器
在Java空间中,人们正在讨论adding a new dynamicinvoke
bytecode to the JVM这样的调度由JIT处理,在中间语言的抽象之后.
Java方法得到了many significant parties的支持.
这些似乎是两种根本不同的方法.每个阵营有什么优点,为什么两个阵营都选择采取不同的路径?我对这两种解决方案的灵活性和运行时性能特别感兴趣.这两个VM最终都试图实现同样的目标吗?
最佳答案 保存中间语言指令集对于受管系统非常重要,因为它可以使新应用程序与已安装的运行时不兼容.
例如. Sun在引入泛型时避免了变化,这就是为什么Java中泛型的实现是半生不熟的.同时,MS为泛型引入了新的指令.
从理论上讲,引入动态调用的新指令可以为更优化的方法查找提供可能性(例如inline caching).
BTW,.NET 4.0将包含CLR版本,尽管AFAIK此版本更改将由更新的系统库引起.