编程语言大致可以分为两类: 编译型语言和解释型语言。编译型语言的特点是编译器会将我们编写的源代码一次性地编译成计算机可识别的二进制文件,然后计算机直接执行,像C 和C++ 都属于编译型语言。解释型语言则完全不一样,它有一个解释器,在程序运行时,解释器会一行行地读取我们编写的源代 码,然后实时地将这些源代码解释成计算机可识别的二进制数据后再执行,因此解释型语言通常效率会差一些,像Python 和JavaScript 都属于解释型语言。
Java 是属于编译型语言还是解释型语言呢?虽然Java 代码是要先编译再运行的,但是Java 代码编译之后生成的并不是计算机可识别的二进制文件,而是一种特殊的.class 文件,这种.class 文件只有Java 虚拟机(Android 中叫ART ,一种移动优化版的虚拟机)才能识别,而这个Java 虚拟机担当的其实就是解释器的角色,它会在程序运行时将编译后的.class 文件解释成计算机可识别的二进制数据后再执行,因此,准确来讲,Java 属于解释型语言。
了解了Java 语言的运行机制之后,可以知道,其实Java 虚拟机并不直接和Java 代码打交道,而是和编译之后生成的.class 文件打交道。那么如果开发了一门新的编程语言,然后做个编译器,让它将这门新语言的代码编译成同样规格的.class 文件,Java 虚拟机也是可以识别的,这其实就是Kotlin 的工作原理了。Java 虚拟机不关心.class 文件是从Java 编译来的,还是从Kotlin 编译来的,只要是符合规格的.class 文件,它都能识别。
与Java 语言相比,Kotlin 的语法更加简洁,对于同样的功能,使用Kotlin 开发的代码量可能会比使用Java 开发的减少50% 甚至更多。另外,Kotlin 的语法更加高级,相比于Java 比较老旧的语法,Kotlin 增加了很多现代高级语言的语法特性,使得开发效率大大提升。还有, Kotlin 在语言安全性方面下了很多工夫,几乎杜绝了空指针这个全球崩溃率最高的异常。
Kotlin 在拥有众多出色的特性之外,还有一个最为重要的特性,那就是它和Java 是100% 兼容的。Kotlin 可以直接调用使用Java 编写的代码,也可以无缝使用Java 第三方的开源库。这使得Kotlin 在加入了诸多新特性的同时,还继承了Java 的全部财富。
|