【问题标题】:Is there a IKVM for Java? Can I run .NET assemblies on a JVM?是否有适用于 Java 的 IKVM?我可以在 JVM 上运行 .NET 程序集吗?
【发布时间】:2011-10-04 21:59:38
【问题描述】:

IKVM 是一个了不起的野兽,它可以让我在 .NET 环境中执行 Java jar。也就是说,它是在 .NET 运行时 (CLR) 上编写的 JVM。

是否存在相反的情况?有人在 JVM 上写过 CLR 吗?通过适当的翻译和基类库实现,我们可能会发现 .NET 代码在激进的 JIT 编译器(如 HotSpot)中比在 CLR JIT 中执行得更快。

【问题讨论】:

  • 没听说过IKVM,刚查了一下。太好了,谢谢你的问题;-)
  • CLR JIT 几乎没有“未优化”,它利用了 MSIL 但不是 Java 字节码的许多特性。我怀疑,一般来说,会有任何性能优势增益。如果有的话,相反的可能性似乎更大。此外,这篇文章中的语言......最后是高度自以为是和煽动性的。
  • @pst- 你是对的。 CLR JIT 做了很多优化,所以我编辑了这个问题,使其不那么令人兴奋。也就是说,我不知道 CLR JIT 会进行增量优化,例如随着程序的执行,用性能更高的代码替换函数调用或函数体。

标签: java .net ikvm


【解决方案1】:

大多数 Java 程序使用 IKVM(32 位)运行的速度比使用 Java SE 快一些。我的测试显示快 5-10%。我认为 MSIL 代码使用 HotSpot JIT 会运行得更慢。

下一个问题是,MSIL 作为 Java 字节码有更多的特性。模仿它可能很困难,而且会消耗性能。

有了Mainsoft Grasshopper,您就有了一个适用于Java EE 服务器的解决方案。我不知道桌面 GUI 的解决方案。

【讨论】:

  • 这是一个大型程序。基于 Jetty 的 Web 服务器。它集中使用文件、JDBC、字体和图形 API。您将永远找到使用其中一个或另一个更快的代码。我们还没有进行密集测试。看到我们的程序使用 IKVM 运行得更快就足够了。我认为必须更好地实施一个重要部分。例如本地调用或同步。它一定不是 JIT 自己更好。
【解决方案2】:

您可以使用 JACOB (Java COM Bridge) 调用 COM 或 ActiveX 组件。那是我只需要从 JAVA 调用我的 C# 代码时使用的。 还要检查来自 StackOverflow How can I call .NET code from Java? 的此链接 还用谷歌搜索了这个http://michaelkimsal.com/blog/running-net-code-on-a-jvm/

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 2010-10-27
  • 1970-01-01
  • 2015-12-18
  • 1970-01-01
  • 2015-08-07
相关资源
最近更新 更多