gpt4 book ai didi

jvm - 使用 OpenJDK 编译的 java 代码是否始终在 Oracle 的 Hotspot 上运行,反之亦然?

转载 作者:行者123 更新时间:2023-11-29 10:15:02 26 4
gpt4 key购买 nike

我通过了这个 document相同的 Java 代码可以在 Oracle JDK 中编译,但不能在 OpenJDK 中编译。存在一些针对相同问题的引用资料 here too on SO .这是否意味着 "javac" 是特定于供应商的?

如果答案是肯定的呢?那么他们可能会产生不同的字节码。 Refer here .

那么如果字节码不同,Oracle的JVM会如何处理字节码由 OpenJDK 的 javac 生成?

是否可以安全地说:“Java 是”一次编写,随处运行,前提是 javac 编译器和 JVM 来自同一供应商? "

最佳答案

javac 不是特定于供应商的,但是不同的编译器可能有不同的错误,这可能会导致差异。

更加不同的是可用的内置库,尤其是不打算供开发人员使用的类。例如sun.misc.Unsafe.copyMemory(5 args) 直到 Oracle JDK 中的 Java 6 update 18 才存在,并且仅在 OpenJDK 的最新更新中可用。据我所知,它在 IBM JVM 中不可用。

Write Once, Run Anywhere 意味着编译一次,随处运行。例如,C++ 可以编写一次并在任何地方运行,只要您为每个系统重新编译它。

一旦您编译了 Java 代码,它就会在任何具有您使用的库的系统上运行。

关于jvm - 使用 OpenJDK 编译的 java 代码是否始终在 Oracle 的 Hotspot 上运行,反之亦然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20268463/

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