kotlinc vs kotlincjvm编译,kotlin vs java运行



我刚刚安装了Kotlin版本1.7.0,bin文件夹具有以下可运行文件。

  • kotlinc
  • kotlin-jvm
  • kotlin

快速检查后发现,kotlinckotlin-jvm用于将代码编译为字节码,就像Java中的javac一样。为什么kotlin编译有两个命令。有什么显著差异吗?

并且,我应该使用java命令来运行字节码还是使用kotlin命令来运行该字节码。性能方面的任何权衡。

官方文档没有过多地介绍这些命令行工具。虽然您可以用-help调用它们,但这只是描述了它们接受的其他选项。

然而,我可以告诉你我的系统(macOS,Kotlin是使用HomeBrew安装的(上发生了什么。我不知道下面的内容在多大程度上适用于其他平台,但我怀疑至少Windows和Linux会非常相似。

这些可执行文件是包装脚本,因此可以看到它们的一些功能。(他们最终运行Kotlin程序,这限制了你的视野…(

编译:

kotlinc-jvm是一个非常简单的包装器脚本,它只调用kotlinc——所以它们之间显然没有有效的区别!

这表明Kotlin/JVM是默认的编译目标,至少在我的系统上是这样。(kotlinc-js也调用kotlinc,但仅在设置了$KOTLIN_COMPILER环境变量之后,该变量会更改kotlinc最终运行的程序。(也许kotlinc在其他系统上有不同的默认值——或者至少他们希望允许这种可能性。

运行:

AIUI,运行kotlin实际上等同于运行java,只是kotlin将Kotlin运行时类添加到类路径中。

当然,您可以在运行java时手动添加它们(例如在$CLASSPATH-cp参数中(;但你需要知道它们在哪里,或者有办法找到它们。(在我的系统中,它们在…/libexec/lib/中。唯一重要的是相关的kotlin-stdlibjar,尽管有些代码也需要kotlin-reflect,也许其他代码也需要。或者,如果你有一个完整的Kotlin安装,我认为你可以简单地添加kotlin-runner.jar,它会为你引入其他的。(

我认为使用kotlin没有任何其他好处。

请注意,如果您构建了一个"fat".jar/.war文件,其中包括Kotlin运行时库,那么大多数系统无论如何都会使用java来运行它。

相关内容

  • 没有找到相关文章

最新更新