Dotnet CLR转换为语言编码以集.同时Java代码转换司机代码平台的独立。我们可以把这个集司机代码吗?所以Dotnet将自动成为平台的独立。

有帮助吗?

解决方案

要小心你的术语:

  • CLR不把"语言编码"集-它可以将集地代码。
  • Java码不会转换为"地代码,是独立于平台";这是一种矛盾的说法。Java的源代码转换成独立的平台Java码。JVM码转换成机代码中相同的方式CLR并与集(以及在某种程度上)

注意,这两个集和码 可以 可以解释;热点,有时会解释的,有时准时编制,并经常JIT汇编 多次.。净桌面CLR总是准时编制一个单一的时间的时刻。

这也是值得理解码是唯一独立的平台的程度,有一个JVM提供的平台,你是感兴趣。这同样适用于集.你可以编一个C#程序,在Windows和随后运行在Linux上下单 如果 有一个建立单一平台, 如果 它没有使用任何图书馆不是可以在单。

现在转换集Java码...相反的是更为可行,因为集是 一般 更强大的比Java码。例如,自定价值的类型和泛型集会不会很容易地转换成特码。你可能会需要一些东西更接近CLR Java编写.我敢说有一些聪明的可能性,但存在着根本性的困难。甚至是反向是不可能是容易的,尤其是如果Java7引入动态调用到字节(而动态的打字。净是执行由德国航空航天中心就像一个图书馆)。

其他提示

此应答可能有点offtopic,但值得一提的。 MSIL为Java字节码可以被别人回答问题强硬越详细。但是可以在源代码级从一个框架处理转换为另一种。

如果你有一个Java库,你想在.NET应用程序中使用 - 使用 IKVM 。它编译Java代码到使用IKVMC,一个Java字节码到.NET IL翻译.NET程序集。做检查的许可条款你跳进使用之前!

另外我想知道如果反向是可能的,即.NET源代码到Java?

我可以回答你的问题只是部分。

是,MSIL可以使用转换为本机码 ngen.exe 。在这种情况下,然而,你失去了在不同的目标架构,例如高效运行的能力32位和64位。此外,您将需要创建多个版本,每个目标平台。

除此之外,我建议使用Kurt的答案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top