MSIL可以转换为Java本机代码吗?
Dotnet CLR将语言代码转换为MSIL。而Java代码可以转换为独立于平台的本机代码。我们可以将此MSIL转换为本机代码吗?因此,Dotnet将自动变得独立于平台。请注意此处的术语:MSIL可以转换为Java本机代码吗?,java,.net,cil,native-code,Java,.net,Cil,Native Code,Dotnet CLR将语言代码转换为MSIL。而Java代码可以转换为独立于平台的本机代码。我们可以将此MSIL转换为本机代码吗?因此,Dotnet将自动变得独立于平台。请注意此处的术语: CLR不会将“语言代码”转换为MSIL-它会动态地将MSIL转换为本机代码 Java代码不会转换为“独立于平台的本机代码”;这是一个矛盾的说法。Java源代码被转换成独立于平台的Java字节码。JVM将字节码转换为本机代码的方式与CLR对MSIL的转换方式相同(在某种程度上) 注意,MSIL和字节码都可以
- CLR不会将“语言代码”转换为MSIL-它会动态地将MSIL转换为本机代码
- Java代码不会转换为“独立于平台的本机代码”;这是一个矛盾的说法。Java源代码被转换成独立于平台的Java字节码。JVM将字节码转换为本机代码的方式与CLR对MSIL的转换方式相同(在某种程度上)
现在,关于将MSIL转换为Java字节码。。。反之更可行,因为MSIL通常比Java字节码更强大。例如,MSIL中的自定义值类型和泛型不容易转换为字节码。您可能需要更接近于用Java编写的CLR的东西。我敢说有一些聪明的可能性,但也有一些根本性的困难。即使反过来也不太容易——特别是如果Java 7引入了字节码的动态调用(而.NET中的动态键入是由DLR作为库执行的)。我只能部分回答您的问题 是的,可以使用将MSIL转换为本机代码。但是,在这种情况下,您将无法在不同的目标体系结构上高效运行,例如32位对64位。此外,您还需要创建多个版本,每个目标平台一个
除此之外,我建议使用库尔特的答案。这个回答可能有点离题,但值得一提。MSIL到Java的字节码可能很难,正如回答这个问题的其他人所详述的那样。但您可以在源代码级别处理从一个框架到另一个框架的转换 如果您想在.NET应用程序中使用Java库,请使用。它使用IKVMC(一种Java字节码到.NET IL转换器)将Java代码编译成.NET程序集。在你开始使用之前,一定要检查许可条款
此外,我很想知道是否可以实现相反的功能,即将NET源代码转换为Java?此外,作为Microsoft CLR一部分的标准库中有很大一部分与Microsoft操作系统功能相关。JVM库明显更独立于操作系统。