CLR与Java(作为语言)不兼容吗?

Joh*_*zen 6 java clr

我想了一下关于让Java在CLR上运行的可行性.

在看到上一个问题之后,我意识到Sun Java平台和.NET运行时之间存在很多差异,这使得交叉编译在除了最微不足道的情况之外都是不可能的.

话虽如此,IL不是图灵完整的语言吗?你不能在IL写一个JVM吗?当然,答案是肯定的,但为什么要走那么远呢?

我的问题是:

CLR(作为一个平台)是否与Java作为一种语言(不是一个平台)不兼容?

为了使它适合,有多少Java必须被扭曲或破坏?


当然,可以为CLR + .NET编译:

import System.*;

public class HelloWorldExample
{
    public static void main(String args[])
    {
        Console.WriteLine("Hello World !");
    }
}
Run Code Online (Sandbox Code Playgroud)

澄清:

我得到的是,我想知道java的哪些语言特性与它们的CLR对应物不兼容.

例如,我认为泛型在某种程度上是一致的.我相信这是类似的故事,例外.

Gab*_*abe 6

CLR的设计假设人们必须能够从Java过渡到.Net,因为它能够在很大程度上未经修改地编译他们的Java源代码.因此,您可能认为在运行时(如协变数组)存在问题的Java中的内容作为CLR中的功能包含在内.

J#项目实现了足够的Java标准库,大多数Java应用程序只需很少的更改即可编译.请注意,J#可以加载JVM字节码以实现兼容性,但J#源始终编译为CLR字节码.