使用JDK 7与使用JDK 8和编译器合规性级别1.7之间有什么区别?

时间:2014-12-03 17:58:52

标签: java android

我想知道在JDK 8下运行/构建软件并使用编译器合规性级别1.7与JDK 7作为系统默认值是否存在差异?我更感兴趣的是参考Android构建,构建应用程序,Eclipse,Android Studio等。

3 个答案:

答案 0 :(得分:3)

是的,JDK 1.8中有很多新类,例如java.time类。如果你在JDK 1.7中构建,你就不会得到那些;但如果您使用编译器合规级别为1.7的JDK 1.8构建,则可以使用它们。

答案 1 :(得分:1)

是的,在JDK 8下运行/构建软件与使用编译器合规性级别1.7与JDK 7作为系统默认值之间存在差异。

  1. 在JDK 8下运行软件并使用编译器合规性级别:您在jdk 1.7中编译但在1.8上运行。没问题,您的程序将根据需要运行。

  2. JDK 7作为系统默认值:您在1.7版本中编译并在相同版本上运行。

  3. 我想知道你想使用第一种情况吗?

答案 2 :(得分:1)

实际上卡车装载的差异。对于JDK,合规性级别是编译器的指令,用于专门使用您指定版本的优化和链接功能。它还有更多内容,但我不认为你想知道这一点。新的JDK版本带来了新功能,这些版本中的编译器能够在构建类源文件或源Java文件的汇编代码时理解和链接这些功能。因此,那些JDKS中的JVM运行时也可以处理这些优化和案例并对其进行处理。因此,如果没有合规性级别,使用JDK8构建的类文件只能在基于JDK8的运行时上正确运行。它们可能不会使用JDK7或6.为了解决这个问题,从而允许JDK8编译的代码在JDK8,7上运行,甚至可能在6上运行,因此需要相应地为编译器指令添加合规性级别。缺点是您可能无法使用编译器提供的一些最新功能,但这种情况很少,而且超过了对互操作性和可维护性的需求。