是否可以编译较新的Java版本(9、10、11)以在较旧的平台(例如Java 8)上运行?

Tor*_*ene 3 java maven java-8 java-11

是否可以使用较新的Java(例如9、10、11等)版本进行开发,并将Java编译为某些较旧的版本-如Java 8?

我们想使用新Java版本的新功能,但是我们的代码需要在Java 8平台上运行。

如果重要的话:我们正在与Maven合作。


用Javascript方式对其进行短语说明:

是否存在Java的Babel Polyfill等效项?

Jus*_*der 6

不必要。如果您的代码使用以前版本中未定义的包/语法结构,则该程序将无法运行/编译。

这样想吧。在Java 8之前,没有lambda表达式。因此,如果您在Java 8+中创建lambda表达式,然后尝试在Java 7中进行编译,则编译器将类似于:什么是lambda表达式?

简而言之,没有。但是,您可以选择其他方式。大部分情况下,使用较高版本来编译以较低版本编写的代码。

  • 编译器甚至可能不会抱怨这一点,我遇到了类似的问题,指示Java 8编译器以Java 6为目标,在Java 8上运行时,应用程序测试正常,但是在Java 6上运行时,出现执行错误,有些方法不可用。因此直到我们在目标jdk(Java 6)上实际运行程序后才发现错误 (2认同)

Mak*_*oto 6

否-您不能在较早的JVM上使用新功能;该字节码是不兼容的

您绝对可以使用Java的较新版本来编译为较低的版本,并在模块周围加一些注意事项。

如果您需要较新的Java版本的新功能,那么该迁移到新版本了。除此之外,在需要Oracle支持之前,您将处在良好状态。