【发布时间】:2015-09-29 18:49:33
【问题描述】:
当我们使用 javac 选项时:-source 和 -target
编译器如何“知道”要生成的代码?
我的意思是任何编译器如何知道任何以前的规范 java release 或者我必须做一些设置才能提供它 关于他们的一些信息?
【问题讨论】:
标签: java compilation java-7 javac
当我们使用 javac 选项时:-source 和 -target
编译器如何“知道”要生成的代码?
我的意思是任何编译器如何知道任何以前的规范 java release 或者我必须做一些设置才能提供它 关于他们的一些信息?
【问题讨论】:
标签: java compilation java-7 javac
javac 程序知道如何处理这些参数,而无需您提供任何额外信息。但是请注意这里有一个陷阱:这些选项与源语法和类文件的形式和内容有关,但它们没有考虑到 Java 标准库。因此,尽管源或目标 Java 版本被设置为较早的版本,但他们将完全满足于编译依赖于(例如)Java 7 中新的标准库类或方法的代码。 原则上结果可以在较早的 Java 版本上运行,但实际上这需要向后移植较晚的标准库,至少部分向后移植。
如果您正在为特定最低版本的 Java 开发,您应该使用该版本进行开发。 -source 和 -target 选项会在您或其他人以后想要使用更高版本的 javac 重建源代码时发挥作用,而不会降低与早期目标 Java 的运行时兼容性。
【讨论】: