Kotlin 语言简介
在 Android 系统诞生的前 9 年时间里, Google 都只提供了 Java 这一种语言来开发 Android 应用程序, 在 Android 1.5 系统中 Google 引入了 NDK 功能, 支持使用 C 和 C++ 语言来进行一些本地化开发.
Google 在 2017 年的 I/O 大会上宣布, Kotlin 正式成为 Android 的一级开发语言, 和 Java 平起平坐, Android Studio 也对 Kotlin 进行了全面的支持. 两年之后, Google 又在 2019 年的 I/O 大会上宣布, Kotlin 已经成为 Android 的第一开发语言, 虽然 Java 仍然可以继续使用, 但 Google 更加推荐开发者使用 Kotlin 来编写 Android 应用程序, 并且未来提供的官方 API 也将会优先考虑 Kotlin 版本.
Kotlin 是由 JetBrains 公司开发与设计的, 早在 2011 年, JetBrains 就公布了 Kotlin 的第一个版本, 并在 2012 年将其开源.
2016 年, Kotlin 发布了 1.0 正式版, 这代表着 Kotlin 已经足够成熟和稳定了, 并且 JetBrains 也在自家的旗舰 IDE 开发工具 IntelliJ IDEA 中加入了对 Kotlin 的支持, 自此 Android 开发语言终于有了另外一种选择.
2017年 Google 宣布 Kotlin 正式成为 Android 一级开发语言, Android Studio 也加入了对 Kotlin 的支持.
Android 操作系统明明是由 Google 开发的, 为什么 JetBrains 作为一个第三方公司, 却能够自己设计出一门编程语言来开发 Android 应用程序呢?
编程语言大致可以分为两类:
编译型语言和解释型语言. 编译型语言的特点是编译器会将我们编写的源代码一次性地编译成计算机可识别的二进制文件, 然后计算机直接执行, 像 C 和 C++ 都属于编译型语言. 解释型语言则完全不一样, 它有一个解释器, 在程序运行时, 解释器会一行行地读取我们编写的源代码, 然后实时地将这些源代码解释成计算机可识别的二进制数据后再执行, 因此解释型语言通常效率会差一些, 像 Python 和 JavaScript 都属于解释型语言.
虽然 Java 代码确实是要先编译再运行的, 但是 Java 代码编译之后生成的并不是计算机可识别的二进制文件, 而是一种特殊的 class 文件, 这种 class 文件只有 Java 虚拟机 (Android 中叫 ART, 一种移动优化版的虚拟机) 才能识别, 而这个 Java 虚拟机担当的其实就是解释器的角色, 它会在程序运行时将编译后的 class 文件解释成计算机可识别的二进制数据后再执行, 因此, 准确来讲, Java 属于解释型语言.
Java 虚拟机不关心 class 文件是从 Java 编译来的, 还是从 Kotlin 编译来的, 只要是符合规格的 class 文件, 它都能识别. 也正是这个原因, JetBrains 才能以一个第三方公司的身份设计出一门用来开发 Android 应用程序的编程语言.
Kotlin 的工作原理: 我现在开发了一门新的编程语言, 然后自己做了个编译器, 这个编译器将这门新的编程语言的代码编译成同样规格的 class 文件, Java 虚拟机同样能识别.
Kotlin 仅在 1.0 版本发布一年后就成为 Android 官方支持的开发语言.
Kotlin 的语法更加简洁, 对于同样的功能, 使用 Kotlin 开发的代码量可能会比使用 Java 开发的减少 50% 甚至更多. 另外, Kotlin 的语法更加高级, 相比于 Java 比较老旧的语法, Kotlin 增加了很多现代高级语言的语法特性, 使得开发效率大大提升. 还有, Kotlin 在语言安全性方面下了很多工夫, 几乎杜绝了空指针这个全球崩溃率最高的异常.
Kotlin 在拥有众多出色的特性之外, 还有一个最为重要的特性, 那就是它和 Java 是 100% 兼容的. Kotlin 可以直接调用使用 Java 编写的代码, 也可以无缝使用 Java 第三方的开源库. 这使得 Kotlin 在加入了诸多新特性的同时, 还继承了 Java 的全部财富.