是否存在类似 Babel 的 Java 编译器?

Ole*_*Ole 4 java aspectj cglib javassist kotlin

使用 javascript 如果我们想确保我们的代码在所有浏览器版本中运行,我们可以使用Babel。Java 有没有类似的东西,我们可以在 Java 9 中编写我们的代码,但它会在 Java 6 运行时中运行?

例如,Kotlin 可以针对多个 JVM 运行时版本吗?

vod*_*dan 6

我希望像 Kotlin 这样的东西能够针对多个 JVM 运行时——我想我们现在只需要梦想。

您可以将 Kotlin 代码编译为 JDK6、JDK7、JDK8、JDK9 或 JDK6 以上的任何 JDK。这就是支持 Java 1.6 级别字节码的含义。Kotlin 的所有功能都将保持不变,除了库,它可能需要不同的 JDK 版本。

Kotlin 生成的字节码通常会保持不变,独立于目标 JVM 版本。一个例外是,如果您设置了编译器选项jvmTarget = "1.8",那么编译器可能(也可能不会)使用 JDK8 的某些特性作为优化。

恕我直言,这个问题得到了所有的缺点,因为它是多么出乎意料。像 Babel 这样的工具是 JavaScript 独有的,因为在所有其他语言中,它们被称为编译器。由于 JS 决定它可以在没有编译器的情况下完成,因此我在部署方面遇到了这样的问题。有(非常有限的)Java 反向移植工具,但它们只是编译器的插件。Kotlin 没有,因为它的开发独立于 JDK,并且它必须支持 1.6 以上的所有以前的 JDK 版本。

总而言之,如果您使用 Kotlin 进行 JVM 或 JS 开发,那么您的梦想就实现了——您可以使用任何版本的 Kotlin,以及任何 JVM 库,可能是 ES5.1 以上的任何 JS 库,并获得一致的运行时表示。