跟Java一样,Kotlin是一个编译语言。这意味着在你运行Kotlin代码之前,你必须编译它。让我们讨论一下编译步骤是如何工作的,然后瞧瞧为你提供生计的各种工具。如果你需要有关环境配置的更多信息,请参考Kotlin官网的“教程”章节

1.5.1 编译Kotlin代码

Kotlin源码通常存放在带有.kt后缀的文件中。Kotlin编译器分析源码并生成.class文件,就像Java编译那样。生成的.class文件会被打包然后使用你使用的应用类型的标准流程执行。在最简单的情景中,你可以使用kotlinc命令从命令行来编译你的代码,然后使用java命令来执行你的代码:

kotlinc <source file or directory> -include-runtime -d <jar name>
java -jar <jar name>

一个简单的Kotlin构建流程描述如图1.1。
Kotlin Build Process

使用Kotlin编译器编译的代码依赖于Kotlin 运行时库。它包含了Kotlin标准类库的定义和Kotlin添加到标准Java API中的扩展。运行时库需要发放到你的应用中。
 在大多数现实生活场景中,你可能会使用像Maven、Gradle或者Ant这样的构建系统来编译你的代码。Kotlin跟所有的这些构建系统都是兼容的。我们将会在附录A中详细讨论。所有的这些构建系统也都支持由Kotlin和Java组成的混合语言项目。Mave和Gradl也会处理包含Kotlin运行库作为你的应用的依赖。

1.5.2 IntelliJ IDEA和Android Studio插件

Kotlin的IntelliJ IDEA 支持以及跟语言本身并行的开发了。它功能最全的开发环境对Kotlin也是可用的。IntelliJ IDEA成熟、稳定。它为Kotlin开发环境提供了全套的开发工具。
 IntelliJ IDEA 15及更新的版本中,Kotlin插件已经包含在内并且是开箱即用的。因此它不需要额外的安装。你也可以使用免费、开源的IntelliJ IDEA社区版或者IntelliJ IDEA旗舰版。在新项目对话框中选择Kotlin,你就可以开始编码了。
 如果你正在使用Android Studio,你可以通过插件管理器来安装Kotlin插件。在设置对话框中,选择插件,然后点击安装JetBrains插件按钮,最后从列表中选择Kotlin。

1.5.3 交互式 shell

如果你想快速的试验Kotlin代码小片段,你可以使用交互式shell(又称REPL)。在REPL中,你可以逐行输入Kotlin代码来查看它的执行结果。为了启动REPL,你也可以运行不带参数的kotlinc命令或者使用IntelliJ IDEA插件中的响应式菜单按钮。

1.5.4 Eclipse插件

如果你是一个Eclipse用户,你也可以在你的IDE中使用Kotlin。Kotlin的Eclipse插件提供了必要的IDE功能,例如,导航和代码填充。这个插件在Eclipse商店是可用的。为了安装这个插件,请选择Help > Eclipse Marketplace 菜单项,然后在列表中搜查Kotlin。

1.5.5 在线平台

这是体验Kotlin的最简便的方法。它不需要任何的装和配置。在这个网站(https://try.kotl.in ),你可以发现一个在线的平台来编写、编译和运行Kotlin程序。这个平台有代码样例来演示Kotlin的特性,也有一系列的练习题来互动学习Kotlin。

1.5.6 Java-Kotlin转换器

掌握一门新语言来提升开发效率从来都不是容易的。所幸的是,我们已经构建了一个一些捷径来为你用现有的Java知识来加速学习和理解Kotlin。
 当你刚开始学习Kotlin,不记得准确的语法时,转换器能够帮助你表达一些想法。你可以编写对应的Java代码然后将其粘贴到Kotlin源文件。转换器将会自动的帮你把代码翻译成Kotlin。转换结果不会一直都是最符合Kotlin习惯用法的,但是转换后的代码可以正常工作。你可以继续你的任务。
 转换器对于把Kotlin引入现有的Java项目是很有帮助的。当你需要编写新的类是,你可以使使用Kotlin从零开始。但是如果你需要明显的改变一个现有的类,在这个过程中你可能需要写一些Kotlin代码。以上就是转换器的用处。首先你把类转换成Kotlin,然后你使用现代编程语言的所有优势来添加修改。
 在IntelliJ IDEA中使用转换器是相当容易的。你也可以复制Java代码段然后粘贴到Kotlin代码文件中,又或者如果你想转换这个文件的话,调用Java文件到Kotlin的转换动作。Eclipse和在线平台中,转换器也是可用的。

results matching ""

    No results matching ""