如果我们想确保我们的代码在所有浏览器版本中运行,那么使用javascript我们可以使用Babel。是否有类似于Java的东西,我们可以在Java 9中编写代码,但它将在Java 6运行时运行?
例如,Kotlin可以针对多个JVM运行时版本吗?
答案 0 :(得分:3)
我希望像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库,并获得一致的运行时表示。
答案 1 :(得分:1)
有一个非官方的库retrolambda
,它将Java 8
功能lambda expression
编译为Java 6
(就像Babel一样)。
我想你会喜欢它,而且这里是:https://github.com/orfjackal/retrolambda
答案 2 :(得分:1)
您可以检查teaVM! http://teavm.org/也有dukeScript