gpt4 book ai didi

java - CLR 是否与 Java(作为一种语言)不兼容?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:27:17 27 4
gpt4 key购买 nike

有一段时间我想知道让 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 !");
}
}

澄清:

我的意思是,我想知道 java 的哪些语言特性与其对应的 CLR 不兼容。

例如,我认为泛型在某种程度上是不一致的。我相信这是类似的故事,但也有异常(exception)。

最佳答案

CLR 的设计假设是,人们必须能够编译大部分未修改的 Java 源代码,从而能够从 Java 过渡到 .Net。因此,在 Java 中您可能认为在运行时存在问题的事物(如协变数组)已作为功能包含在 CLR 中。

J# 项目实现了足够多的 Java 标准库,大多数 Java 应用程序都可以通过最少的更改进行编译。请注意,J# 可以加载 JVM 字节码以实现兼容性,但 J# 源代码始终编译为 CLR 字节码。

关于java - CLR 是否与 Java(作为一种语言)不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3938650/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com