我刚刚安装了Kotlin版本的1.7.0,bin文件夹有以下运行程序。
kotlinckotlin-jvmkotlin快速检查后发现,kotlinc和kotlin-jvm用于将代码编译成字节码,就像Java中的javac一样。为什么有两个命令用于kotlin编译。有什么明显的差别吗?
我应该使用java命令来运行字节码,还是使用kotlin命令来运行字节码。任何在性能上的权衡。
发布于 2022-07-29 19:26:57
官方的文档对这些命令行工具没有太多的描述。 ,虽然您可以用-help来调用它们,但这仅仅描述了它们所接受的其他选项。
但是,我可以告诉您在我的系统(macOS,Kotlin是使用HomeBrew安装的)上发生了什么,. I不知道有多少下面的内容适用于其他平台,但我怀疑至少Windows和Linux会非常相似。
这些可执行文件是包装脚本,因此可以看到它们所做的一些事情。 (它们最终运行Kotlin程序,这限制了您可以看到的…)
汇编:
kotlinc-jvm是一个非常简单的包装脚本,它只调用kotlinc --因此它们之间显然没有任何有效的区别!
这表明Kotlin/JVM是默认的编译目标,至少在我的系统上是这样。kotlinc-js也调用kotlinc,但只有在设置了$KOTLIN_COMPILER环境变量(这改变了kotlinc最终运行的程序)之后, 才会这样做。 可能在其他系统上有不同的默认设置--或者至少他们希望允许这种可能性。
跑步:
运行kotlin的AIUI实际上等同于运行java,除了kotlin将Kotlin运行时类添加到类路径之外。
当然,在运行java时(例如在$CLASSPATH或-cp参数中),您可以手动添加它们;但是,您需要知道它们在哪里,或者有什么方法可以找到它们。 (在我的系统中,只有在…/libexec/lib/. The中,只有相关的kotlin-stdlib jar才是必需的,尽管有些代码也需要kotlin-reflect,或者其他代码也需要kotlin-reflect,或者如果您安装了完整的Kotlin,我认为您可以简单地添加kotlin-runner.jar,这会为您吸引其他代码)。
我认为使用kotlin没有任何其他好处。
请注意,如果您构建了一个‘’fat‘.jar/.war文件,其中包括Kotlin运行时库,那么大多数系统都将使用java来运行该文件。
https://stackoverflow.com/questions/73169118
复制相似问题