gpt4 book ai didi

java - MSIL 和 Java 字节码的区别?

转载 作者:IT老高 更新时间:2023-10-28 11:46:53 27 4
gpt4 key购买 nike

我是 .Net 新手,我正在尝试先了解基础知识。 MSIL和Java字节码有什么区别?

最佳答案

首先让我说,我不认为 Java 字节码和 MSIL 之间的细微差别会困扰新手 .NET 开发人员。它们都具有相同的目的,即定义一个抽象的目标机器,它是最终使用的物理机器之上的一层。

MSIL和Java字节码很相似,其实 就是 有个工具叫Grasshopper它将 MSIL 转换为 Java 字节码,我是 Grasshopper 开发团队的一员,所以我可以分享一些我的(褪色的)知识。请注意,当 .NET 框架 2.0 出现时,我停止了这方面的工作,因此其中一些事情可能不再正确(如果是这样,请发表评论,我会更正它)。

  • .NET 允许用户定义的类型具有与 常规 引用语义 (struct) 相对的值语义。
  • .NET 支持无符号类型,这使得指令集更加丰富。
  • Java 在字节码中包含方法的异常规范。虽然异常规范通常只由编译器强制执行,但如果使用了默认类加载器以外的类加载器,它可能会由 JVM 强制执行。
  • .NET 泛型用 IL 表示,而 Java 泛型仅使用 type erasure .
  • .NET 属性在 Java 中没有等价物(这仍然是真的吗?)。
  • .NET enums 只不过是整数类型的包装器而已,而 Java enums是非常成熟的类(class)(感谢 Internet Friend 的评论)。
  • .NET 有 outref 参数。

还有其他语言差异,但大部分都没有在字节码级别表达,例如,如果内存服务,Java的非静态内部类(在.NET中不存在)不是字节码功能,编译器会为内部类的构造函数生成一个附加参数并传递外部对象。 .NET lambda 表达式也是如此。

关于java - MSIL 和 Java 字节码的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/95163/

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