这篇文章主要描述 kotlin
的简单编译与反编译的流程。以及与 java
的关系。
之前说到 kotlin
是一个静态的代码语言。他也是需要编译的。需要编译就有编译器;而他和java
又是可以相互调用的。所以隐隐约约感觉应该编译出来的东西和应该也和java
相关;下面就来看一下。
下载安装编译器
方式在官网上都有;我这里选择的是下载压缩包;你通过sdkman
;homebrew
等安装当然都是 ok 的。官网链接 点我大帅比。
下载完之后,解压,配置好路径;如下:
退出;source
一下你的bashrc
或者zshrc
文件;而后验证一下
如此一来,你的编译器就安装好了。下面就是测试。
编译与运行kotlin文件
首先;vim
编写一个简单的 hello world
文件 HelloKotlin.kt
;
|
|
第二:编译与运行;
与 java
类似;kotlinc HelloKotlin.kt
编译; 运行 kotlin HelloKotlinKt
执行;如下图。
这里需要注意的是;编译的时候产生的文件如下:
一个class
文件;以及一个配置文件的文件夹。
这个class
文件就是我们执行的文件;而编译器在文件末尾加上了Kt
两个字母用于标记这个Kotlin
的编译文件。
反编译 class 文件
既然是 class
文件;可以和java
相互执行;javap
反编译一下看看 class
文件的结构。因为kotlin
文件中;我们是没有指定类的;那在class
文件中,一定是会生成类的;否则就和 java
的基本逻辑产生了冲突。我们看一下:
可以反编译的更加彻底一点看下方法内部实现;命令是 javap -c
可以看到;调用的都是 java
内部的方法。
打包成jar
既然是在 jvm
上运行;一定是可以打成 jar
来执行的;kotlinc
提供了支持。
-include-runtime
是将kotlin
运行时所需要的包都包含进去的参数。
而后就可以用 java -jar
来执行。得到一样的结果
总结:
以上说了如何编译和反编译kotlin
以及如何打成 jar
包运行。当然了一般情况下我们用不到这么麻烦,intellij
提供了很好的支持,但这有助于帮助我们理解 kotlin
与 java
的关系。也有注意我们更好的学习 kotlin