本系列内容均来自《Kotlin从小白到大牛》一书,感谢作者关东升老师。
Kotlin语言设计目标
Kotlin首先被设计为用来取代Java语言
。 目前主要的应用场景:
- 服务器端编程。 基于JavaEE的Web服务器端开发和数据库编程等。
- Android应用开发。 替代Java语言编写Android应用程序。
Kotlin这两种场景的应用都需要Java虚拟机( Java Virtual Machine, JVM)
此外, Kotlin还有其他的应用场景:
- 编译成JavaScript代码。 Kotlin代码还可以编译成JavaScript代码, 这样就可
以应用于Web前端开发。 - 编译成本地( Native) 代码。 Kotlin代码还可以编译成本地( Native) 代码, 本地代码运行不再需要Java虚拟机, 类似于C语言。
Kotlin与Java虚拟机
Kotlin是依赖于Java虚拟机运行的语言
1. Java虚拟机
Java应用程序能够跨平台运行, 主要是通过Java虚拟机实现的。 如下图所示, 不同软硬件平台Java虚拟机是不同的, Java虚拟机往下是不同的操作系统和CPU, 使用或开发时需要下载不同的JRE或JDK版本。 Java虚拟机往上是Java应用程序, Java虚拟机屏蔽了不同软硬件平台, Java应用程序不需要修改, 不需要重新编译直接可以在其他平台上运行。2. Kotlin应用程序运行过程
要了解Kotlin应用程序运行过程, 则需要先了解Java应用的运行过程。
Java程序运行过程如下图所示, 首先由Java编译器将Java源文件( *.java文件)
编译成为字节码文件( *.class文件)
, 这个过程可以通过JDK( Java开发工具包) 提供的javac命令
进行编译
。 当运行Java字节码文件
时, 由Java虚拟机中的解释器
将字节码解释成为机器码
去执行, 这个过程可以通过JRE( Java运行环境) 提供的java命令解释
运行。
基于Java虚拟机的Kotlin应用程序运行过程类似于Java程序运行过程, 其过程如下图所示, 首先由Kotlin编译器
将Kotlin源文件( *.kt文件) 编译成为字节码文件( *Kt.class文件)
, 注意这个过程中文件名会发生变化, 会增加Kt后缀, 例如:Hello.kt源文件编译后为HelloKt.class文件。 编译过程可以通过Kotlin编译器提供的kotlinc命令
进行编译。 当运行Kotlin字节码
文件时, 由Java解释器
将字节码
解释成为机器码
去执行, 这个过程也是通过java
命令解释, 但需要Kotlin运行时库
支持才能正常运行。