Java是否存在类似Babel的编译器?
如果我们想要确保我们的代码在所有浏览器版本中运行,使用JavaScript,我们可以使用Babel 。 有没有像Java这样的东西,我们可以在Java 9中编写我们的代码,但它会运行在Java 6运行时?
例如,Kotlin可以指定多个JVM运行时版本吗?
我希望像Kotlin这样的产品能够瞄准多个JVM运行时间 – 我想我们现在只需要做个梦想。
您可以将Kotlin代码编译为JDK6,JDK7,JDK8,JDK9或JDK6以上的任何JDK。 这就是支持Java 1.6级别字节码的含义。 除了可能需要不同JDK版本的库之外,Kotlin的所有功能都将保持不变。
由Kotlin生成的字节码通常保持不变,与目标JVM版本无关。 一个例外是,如果你设置了一个编译器选项jvmTarget = "1.8"
,那么编译器可能(或不可能)使用JDK8的某些特性作为优化。
恕我直言,这个问题得到了所有的缺点,因为它是多么意外。 像Babel这样的工具对JavaScript来说是独一无二的,因为在所有其他语言中,它们被称为编译器 由于JS决定可以不用编译器,所以我在部署方面有这样的问题。 Java的后端移植工具(非常有限),但它们只是编译器的插件。 Kotlin没有任何功能,因为它的开发独立于JDK,并且必须支持1.6以上的所有以前的JDK版本。
综上所述,如果您使用Kotlin进行JVM或JS开发,您的梦想就会实现 – 您可以使用任何版本的Kotlin,包含任何JVM库,可能位于ES5.1之上的任何JS库,并获得一致的运行时表示。
有一个非官方的库retrolambda
,它将Java 8
特性的lambda expression
编译成Java 6
(就像Babel一样)。
我想你会喜欢它,这里是: https : //github.com/orfjackal/retrolambda