有没有适用于Java的IKVM?我能否在JVM上运行.NET程序集?

18

IKVM是一种神奇的工具,它使我能够在.NET环境中执行Java jar文件。也就是说,它是在.NET运行时(CLR)上编写的JVM。

相反的情况存在吗?有人编写了一个基于JVM的CLR吗?通过适当的翻译和基类库实现,我们可能会发现在像HotSpot这样的高度优化JIT编译器中,.NET代码比在CLR JIT中执行更快。


1
没听说过IKVM,刚刚查了一下。太好了,谢谢你的问题;-) - Horst Walter
2
CLR JIT并不是“未经优化”的,它利用了许多MSIL的特性,而这些特性在Java字节码中是没有的。我怀疑一般情况下不会有任何性能优势可言。如果有什么区别的话,相反的情况更有可能发生。此外,这篇文章中的语言...在结尾处非常主观和具有攻击性。 - user166390
1
@pst- 你说得对。CLR JIT 进行了很多优化,所以我已经编辑了问题,使其不那么令人兴奋。话虽如此,我不知道 CLR JIT 是否进行增量优化,例如在程序执行时用更高效的代码替换函数调用或函数体。 - Sebastian Good
2个回答

2

Mainsoft Grasshopper (http://dev.mainsoft.com/Default.aspx?tabid=130)和JaCIL (http://sourceforge.net/projects/jacil/)是我所知道的两个。 - Brett Kail

2
大多数Java程序在IKVM(32位)上运行比在Java SE上稍快。我的测试显示快了5-10%。我认为,MSIL代码在HotSpot JIT下运行会更慢。
下一个问题是MSIL具有比Java字节码更多的功能。模拟它可能很困难,并且会消耗性能。
使用Mainsoft Grasshopper,您可以在Java EE服务器上使用解决方案。我不知道桌面GUI的解决方案。

这是一个庞大的程序。基于Jetty的Web服务器。它密集地使用了File、JDBC、Font和Graphics API。你永远不会找到比另一个更快的代码。我们没有进行过深入测试。只要看到我们的程序在IKVM下运行得更快就足够了。我认为重要的部分必须得到更好的实现。例如本地调用或同步。它不一定是JIT自身做得更好。 - Horcrux7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接