我经常遇到Java X runtimes compiled against Java Y
这个词。有人可以解释一下这句话究竟意味着什么吗?是否存在X必须大于或等于Y的条件,或者它可以是什么?这对JVM和JDK有何影响?
请原谅我无法理解这里的逻辑。
答案 0 :(得分:1)
如果没有举例说明你在哪里阅读,那么确定你真正要问的是有点困难。
如果某些内容为“为Java 6编译”,那么您可以安全地在从Java 6及更高版本开始的任何Java运行时上使用它,但它将在Java 5运行时及以下版本中出现“不支持的主类版本”错误。< / p>
所以用你自己的话来说,X必须确实等于或大于Y.你选择在编译代码时想要支持的最小Java运行时版本。
很长一段时间以来,库开发人员都试图让他们的代码与Java 5兼容;我最近才看到兼容性最低可达到Java 6。编译这些旧的和不支持的运行时的原因很简单;它是使库工作在已安装和使用的最大运行时数上。您不能自然地假设每个人都已升级到现代Java运行时,仍有大量遗留程序需要Java 5运行时。
幸运的是,SubOptimal已经发表评论,你不会被迫使用Java 5 JDK来实际编译Java 5兼容性代码;您可以使用较新的JDK来生成与旧运行时兼容的字节码。但是,当然,你不能使用Say Java 6来编译具有Java 8功能的代码或生成Java 8字节码。