我经常遇到针对 Java Y 编译的 Java X 运行时
这个短语。有人可以解释一下这句话的实际含义吗?是否存在 X 必须大于或等于 Y 的条件,或者可以是任何值?对于 JVM 和 JDK,这如何工作?
请原谅我无法理解这里的逻辑。
最佳答案
如果不给出您在哪里读到的示例,就很难确定您真正要问的是什么。
如果显示“为 Java 6 编译”,那么您可以在从 Java 6 及更高版本开始的任何 Java 运行时上安全地使用它,但在 Java 5 运行时及更低版本上,它将失败并出现“不支持的主要类版本”错误。
因此,用您自己的话说,X 确实必须等于或大于 Y。您可以在编译代码时选择要支持的最小 Java 运行时版本。
长期以来,库开发人员都试图保持他们的代码与 Java 5 兼容;直到最近我才看到兼容性最低限度地上升到了 Java 6。针对此类旧的且不受支持的运行时进行编译的原因很简单;它是为了使库能够在已安装和使用的最大数量的运行时上运行。您不能自然地假设每个人都已经升级到现代 Java 运行时,仍然有大量遗留程序需要 Java 5 运行时。
幸运的是,正如 SubOptimal 已经评论的那样,您不必被迫使用 Java 5 JDK 来实际编译 Java 5 兼容性代码;您也可以使用较新的 JDK 来生成与较旧的运行时兼容的字节码。但当然,您不能使用 Java 6 来编译具有 Java 8 功能的代码或生成 Java 8 字节码。
关于Java运行时编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28959435/