Kotlin应用开发初体验

本文 摘自《Kotlin编程权威指南》html

本章,你将学习使用IntelliJ IDEA开发首个Kotlin应用。借此,你将熟悉开发环境,建立Kotlin新项目,编写并运行Kotlin代码,以及查看输出结果。本章建立的是一个沙盒项目,可供你演练代码,以学习理解本书中的各类新概念。java

1.1 安装IntelliJ IDEA

IntelliJ IDEA是一套Kotlin集成开发环境。JetBrains公司建立了Kotlin语言并打造出了这套开发工具。开始学习前,请先访问JetBrains公司网站www.jetbrains.com/idea/downlo…,下载IntelliJ IDEA社区开发版软件(见图1-1)。编程

图1-1 下载IntelliJ IDEA社区开发版软件api

下载完毕后,请参考www.jetbrains.com/help/idea/i…网页,完成对应平台IntelliJ IDEA开发工具的安装与配置。oracle

IntelliJ IDEA简称IntelliJ,能帮助开发者编写风格良好的Kotlin代码。利用其内建工具,运行、调试、检查以及重构代码的整个开发过程能无缝衔接,一鼓作气。有鉴于此,咱们推荐使用IntelliJ作Kotlin开发。若想进一步了解使用IntelliJ作Kotlin开发的理由,请阅读1.4节。jvm

1.2 第一个Kotlin项目

恭喜你,Kotlin语言及强大的开发环境都有了,接下来只剩一件事要作:学会流畅运用Kotlin语言。做为首个练手任务,咱们来建立一个Kotlin项目。编程语言

启动IntelliJ。如图1-2所示,映入眼帘的是IntelliJ IDEA的欢迎界面。编辑器

图1-2 欢迎界面ide

(若非首次安装使用,IntelliJ会直接打开上一个项目。要回到欢迎界面,选择File → Close Project关闭项目便可。)函数

单击Create New Project选项,会看到如图1-3所示的建立新项目对话框。

图1-3 建立新项目对话框

在建立新项目对话框中,选择左侧的Kotlin选项,而后选择右边出现的Kotlin/JVM选项,结果如图1-4所示。

图1-4 建立一个Kotlin/JVM项目

除了Kotlin,IntelliJ还支持Java、Python、Scala以及Groovy等其余编程语言。选择Kotlin/JVM就是告诉IntelliJ你要用Kotlin编程。更确切地讲,就是要编写面向而且在Java虚拟机上运行的Kotlin代码。顺便提一下,Kotlin还有个优点:内置的工具链支持编写能在不一样操做系统和平台上运行的Kotlin代码。

(从如今起,提到Java虚拟机,本书都以Java开发社区经常使用的JVM来替代。1.5节还会介绍更多有关面向JVM的知识。)

单击Next按钮继续。你会看到新项目设置界面,如图1-5所示。输入“Sandbox”做为项目名称,IntelliJ会自动给出默认项目路径。若有须要,能够单击右侧的…按钮自定义项目路径。在Project SDK的下拉框中点选Java 1.8,这样,新项目就关联上了JDK 8。

图1-5 给新项目命名

你可能会问,编写Kotlin程序为何须要JDK?答案就是,为了把Kotlin代码转译为字节码(稍后详述),IntelliJ须要JDK提供JVM和Java工具。理论上讲,JDK 6及其后的版本都能用,可是经验代表,至本书撰稿之时,仍是JDK 8用起来更顺畅。

若是在Project SDK下拉框里看不到Java 1.8,说明你尚未安装过JDK 8。继续学习以前,请先访问www.oracle.com/technetwork…,下载相应平台的安装包完成安装,而后重启IntelliJ使其生效。最后,按照前述步骤从头开始建立新项目。

言归正传,确认新项目设置如图1-5所示,而后单击Finish按钮。

如图1-6所示,IntelliJ随即建立一个名为Sandbox的新项目,并在默认的双面板视图里显示出来。反映在硬盘上,IntelliJ会在项目指定路径建立一个文件夹、一系列子文件夹以及对应的项目文件。

图1-6 默认的双面板视图

图1-6中,左面板显示的是项目工具窗口。右面板如今空着。待会你会看到,这里会显示编辑器窗口,供你查看和编辑Kotlin代码文件。先来看左边的项目工具窗口。单击项目名称Sandbox左侧的展开箭头,能够展示项目包含的文件,如图1-7所示。

图1-7 项目视图

在IntelliJ中,项目既包含咱们应用的全部源代码,也包含有相关的依赖和配置信息。项目能够分红一个或多个相似于子项目的模块。新建项目默认含有一个模块,对于简单的Kotlin项目来讲,一个就够了。

如图1-7所示,Sandbox.iml文件包含项目模块的配置信息。.idea文件夹存放整个项目的设置文件,以及用户在IDE中和项目交互相关的设置文件(例如,当前编辑器打开了哪一个文件)。上述文件都是系统自动生成的,如今不用管它们。

External Libraries项包含项目依赖库的信息。单击展开该项,能够看到,IntelliJ已自动为项目添加了Java 1.8以及KotlinJavaRuntime依赖库。

(想了解更多有关IntelliJ项目结构的知识,请访问JetBrains文档网址:www.jetbrains.org/intellij/sd…。)

src文件夹用来存放为Sandbox项目建立的全部Kotlin代码文件。好了,是时候来建立并编辑首个Kotlin代码文件了。

1.2.1 建立首个Kotlin文件

在项目工具窗口中,右击src文件夹。如图1-8所示,在弹出的菜单中,依次选择New和Kotlin File/Class菜单项。

图1-8 新建一个Kotlin文件

在New Kotlin File/Class对话框中,在Name处输入文件名“Hello”,保持Kind处的File选项不变(见图1-9)。

图1-9 给Kotlin文件命名

单击OK按钮确认。如图1-10所示,IntelliJ随即新建了src/Hello.kt这样一个项目文件,同时在IntelliJ右边窗口的编辑器里打开该文件。咱们知道,.java后缀用于Java文件,.py后缀用于Python文件,一样,.kt后缀说明新建文件存放着Kotlin代码。

图1-10 编辑器中的Hello.kt空文件

如今,能够开始编写Kotlin代码了。在Hello.kt编辑器中,动动手,输入代码清单1-1所示的代码。(注意,本书中全部须要读者输入的代码都显示为粗体。)

代码清单1-1 “Hello,World!”Kotlin语言版(Hello.kt)

fun main(args: Array<String>) {
    println("Hello, world!")
}

不太明白刚刚输入的代码?不要担忧,学完本书,你必定能天然、流利地读写Kotlin代码。如今只要大体知道是输出“Hello,World!”字符串就能够了。

代码清单1-1中的代码定义了一个main函数。函数实际就是一组能够稍后运行的代码指令。咱们将在第4章中具体学习如何定义并使用函数。

对于Kotlin语言来说,main函数有特别的意义。它是应用程序开始启动的地方,又称为应用程序入口点。Sandbox或任何应用程序要能运行,都必须定义这样的入口点。本书编写的全部应用程序都从main函数开始启动。

上述代码中的main函数仅包含一条指令(也叫语句):println("Hello, world!")println()也是个函数,内置于Kotlin标准库中。Sandbox应用程序一旦运行,println("Hello, world!")就会执行,IntelliJ随即在屏幕上输出圆括号中的Hello, world!字符串。

1.2.2 运行Kotlin文件

如图1-11所示,一旦输入完代码清单1-1中的代码,在第一行代码左侧,会出现一个绿色的运行按钮 {%}。(若是绿色运行按钮没出现,或者Hello.kt文件名或某段代码下方被打上了红色波浪线,则说明代码有误,请对照代码清单1-1仔细核对修改。另外,若是看到Kotlin的红蓝K标志也没问题,它至关于运行按钮。)

图1-11 运行按钮

代码无误的话,Hello, world!应用程序就能够运行了。如图1-12所示,单击运行按钮,选择Run ‘HelloKt’菜单项。这至关于告诉IntelliJ,你想看着应用程序运行起来。

图1-12 运行Hello.kt文件

应用程序运行时,IntelliJ就一行一行执行花括号({})里的代码,同时在IDE界面底部显示两个新工具窗口,如图1-13所示。

图1-13 运行和事件日志工具窗口

图1-13中,左边是运行工具窗口,又叫控制台(后续都这样称呼)。控制台显示IntelliJ执行应用程序时产生的各类信息,也包括应用程序自己的输出。就本例来讲,你会看到控制台显示Hello, world!字符串,还会看到标志应用程序成功执行的语句:Process finished with exit code 0。这条语句会出如今控制台各类输出信息的最后。你知道就好,本书后续截图将再也不包括此信息。

(macOS用户可能会看到红色的错误文本,指出JavaLauncherHelper有问题,如图1-13所示。不要担忧。这是在macOS上安装Java运行时环境的方式所带来的反作用。要想移除它得费一番工夫,不过这个问题并无什么影响,因此你大可忽略它,继续操做。)

图1-13中,右边是事件日志工具窗口。该窗口显示IntelliJ为应用程序执行所作工做的相关信息。显然,控制台才是咱们要关心的地方,因此事件日志窗口后续不会再提起。(同理,你也不用管事件日志窗口在应用程序运行时是否打开。)要关闭事件日志窗口,单击右上角的隐藏按钮 {%} 便可。

编译并运行Kotlin代码

从点选Run ‘HelloKt’菜单项至控制台输出Hello, World!结果只需很短的时间,但后台实际已忙活了很多事。

首先,IntelliJ使用kotlinc-jvm编译器编译Kotlin代码。具体来说,就是把Kotlin代码转换为JVM语言:字节码。转换过程当中,若有问题,kotlinc-jvm会报错并给出排错提示;一切顺利的话,IntelliJ就进入执行阶段。

在执行阶段,kotlinc-jvm生成的字节码会在JVM上执行。控制台随后会打印程序输出,例如,在JVM一条条执行指令时,调用println()函数会输出传入其中的文字。

字节码指令执行完毕后,JVM随即终止。IntelliJ在控制台显示终止状态,告诉用户执行成功完成或是有错并给出错误码。

第2章会深刻探讨字节码的相关知识,不过,这里要说的是,即便不能彻底理解Kotlin的编译过程,也不妨碍你阅读本书。

1.3 Kotlin REPL

就像拿张稿纸就某个计算一步步演算那样,有时候,你可能须要测试一小段Kotlin代码,看看运行结果如何。这在学习Kotlin语言时很是有用。幸运的是,IntelliJ就提供了这种工具,可以实现无须建立文件就快速测试代码。该工具叫做Kotlin REPL。稍后会解释REPL的含义,如今先打开它,看看能用它作些什么。

如图1-14所示,在IntelliJ中,选择Tools → Kotlin → Kotlin REPL打开Kotlin REPL工具窗口。

图1-14 打开Kotlin REPL工具窗口

如图1-15所示,IntelliJ会在底部显示REPL窗口。

图1-15 Kotlin REPL工具窗口

你能够在里面输入代码,就像使用代码编辑器同样,但有一点不一样:REPL不用编译整个项目,就能当即给出结果。

在REPL中输入代码清单1-2所示的代码。

代码清单1-2 “Hello, Kotlin!”(REPL)

println("Hello, Kotlin!")

输入完成后,按Command-Return(Ctrl-Return)组合键在REPL中执行代码。如图1-16所示,很快,你就会在下面看到Hello, Kotlin!输出结果。

图1-16 执行代码

REPL是英文单词read(读取)、evaluate(求值)、print(输出)和loop(循环)的首字母缩写。整个运转流程以下:在提示符下输入一段代码,而后单击REPL左侧的绿色运行按钮或按Command-Return(Ctrl-Return)组合键提交。REPL读取代码,代码求值(运行代码),输出结果或反作用结果。运行完毕,REPL交回控制权,循环再次开始。

Kotlin之旅已然启航!你在本章学了很多内容,已为进一步掌握Kotlin编程打下基础。下一章,你将开始探索Kotlin语言的细节,学习如何使用变量、常量以及各类数据类型。

1.4 深刻学习:为何要用IntelliJ

任何文本编辑器均可以用来编写Kotlin代码,不过,咱们推荐使用IntelliJ,尤为是在学习这门语言的时候。如同凭借文字处理软件的拼写和语法检查功能,能更轻松地写出规范的文章同样,IntelliJ也更便于编写规范的Kotlin代码。这主要体如今如下几个方面。

  • 借助语法高亮、内容提示和代码自动补全等功能,你能够编写出语法和语义正确的代码。
  • 借助应用程序运行时的断点调试和实时代码步进,你能够边运行边调试代码。
  • 借助重构快捷命令(如重命名、导出常量)以及清理缩进和空行的代码格式化功能,你能够重构现有代码。

并且,因为Kotlin和IntelliJ都出自JetBrains公司,它们之间的集成设计更为细致周全,为用户带来了愉快的开发体验。另外,Android Studio基于IntelliJ开发,因此使用IntelliJ时学会的快捷操做和工具均可以直接运用。

1.5 深刻学习:面向JVM

JVM本质上是个软件,它知道如何执行字节码指令。“面向JVM”就是把Kotlin代码编译或转译成Java字节码,以实如今JVM上运行,如图1-17所示。

图1-17 编译和执行流程

Windows平台也好,macOS平台也罢,它们都有各自的指令集。JVM搭起了字节码与不一样软硬件平台间的桥梁,读取字节码并调用平台特有的与之匹配的指令。显然,不一样软硬件平台有不一样版本的JVM。这样一来,Kotlin开发人员就能够编写平台独立的程序代码,不管什么系统平台,均可实现一次编写,而后编译成字节码,在不一样设备上执行。

既然能转换成JVM能够执行的字节码,Kotlin也就是JVM语言。做为首门JVM语言,Java最为知名。在后来者,如Scala和Kotlin语言中,开发人员扬长避短,已消除了“前辈”Java的一些弊端。

不过,Kotlin并未局限于JVM。本书撰写之际,Kotlin已能编译成JavaScript,甚至能脱离虚拟机层,直接编译成能够在Windows、Linux和macOS平台上运行的原生二进制代码。

1.6 挑战练习:使用REPL研究Kotlin中的算数运算符

本书不少章最后都配有挑战练习。请独立完成它们,以加深对Kotlin语言的理解,积累更多经验。

使用REPL研究Kotlin中的+-*/以及%这些算数运算符是如何工做的。例如,在REPL中,尝试输入(9+12)*2。结果符合预期吗?

还想深刻研究的话,能够看看kotlinlang.org/api/latest/…网页列出的Kotlin标准库里的数学函数,在REPL里作作演练。例如,试试minOf (94, -99),求出最小值。

相关文章
相关标签/搜索