探究“新语言”-Kotlin的前世今生及编程前瞻
Kotlin的前世今生
虽然大多数人知道/听说kotlin的时间并不长,但其实它并不是一门很新的语言。Kotlin是由JetBrains公司开发与设计的,早在2011年,该公司就公布了Kotlin的第一个版本,并在2012年将其开源,但早期的Kotlin并未受到太多的关注。2016年,Kotlin发布了1.0正式版,这表示着Kotlin已经足够成熟和稳定了。自此Android开发语言终于有了另一种选择,Kotlin逐渐受到了广泛的关注。
在Android系统诞生的前9年时间里,Google都只提供了Java这一种语言来开发Android应用程序。不过从2017年开始,这一切都发生了改变。Google在2017年的I/O大会上宣布,Kotlin正式成为Android的一级开发语言,和Java平起平坐,Android Studio也对Kotlin进行了全面的支持。两年之后,Google又在2019年的I/O大会上宣布,Kotlin已经成为Android的第一开发语言,虽然Java仍然可以继续使用,但Google更加推荐开发者使用Kotlin来编写Android应用程序,而且未来提供的很多官方API也将优先考虑Kotlin版本。
然而现实情况是,很多人对Java太熟悉了,不愿意花费额外的事件再去学习一门新语言,再加上国内不少公司对于新技术比较保守,不敢贸然改用新语言去承担一份额外的风险,因此目前Kotlin在国内的普及程度并不高。
但是在海外,Kotlin的发展速度已经势如破竹。根据统计,Google Play商店中排名前1000的App中,有超过60%的App已经使用了Kotlin语言,而且这个比例每年还在不断上升。Android官方文档的代码已经优先显示Kotlin版本,官方的视频教程以及Google的一些开源项目,也改用Kotlin来实现。
面试优先考虑
往往很多时候我们的面试结果能够决定我们的薪资水平,而随着Kotlin的迅猛发展,越来越多的公司都将“熟练使用Kotlin语言编程”作为面试优先考虑项和面试加分项。于是乎,在接触了一段时间的Kotlin后,我也被Kotlin的强大所折服,于是便有了系统学习Kotlin的想法,以博客的形式记录我的学习脚步。
Kotlin语言相较于Java而言
一个词总结,Kotlin语言更加“简洁”。
Java语言的运行机制
可能会有人问了,为什么讲Kotlin要说到Java语言的运行机制?难道是为了让人云里雾里摸不清楚头脑?非也!编程语言大致分为两大类:编译型语言和解释型语言。
-
编译型语言
其特点是编译器会将我们编写的源代码一次性地编译成计算机可识别的二进制文件,然后计算机直接执行,像C++和C都属于编译型语言。 -
解释型语言
它有一个解释器,在程序运行时,解释器会一行行读取我们编写的源代码,然后实时地将这些源代码解释成计算机可识别的二进制数据后再执行,因此解释型语言通常效率会差一些,像Python和JavaScript都属于解释型语言。
问题:Java语言属于编译型还是解释型语言?
对于这个问题,即使是做了很多年Java开发的人都可能会答错。有Java编程经验的人或许会说,Java代码肯定是先编译再运行的,因为javac是编译命令啊,因此Java属于编译型语言。恭喜你,答错了!虽然Java代码确实是要先编译再运行,但是Java代码编译之后生成的并不是计算机可识别的二进制文件,而是一种特殊的class文件,这种class文件只有Java虚拟机(Android中叫做ART,一种移动优化版的虚拟机)才能识别,而这个Java虚拟机担当着解释器的角色,它会在程序运行时将编译后的class文件解释成计算机可识别的二进制数据后再执行,因此准确来说,Java属于解释型语言。
Kotlin语言诞生及其工作原理
了解了Java语言的运行机制之后,发现其实Java虚拟机并不直接和我们编写的Java代码打交道,而是直接和编译之后生成的class文件打交道。那么如果我开发了一门新的编程语言,然后自己做个编译器,让它将这门新语言的代码编译成同样规格的class文件,Java虚拟机能不能识别呢?当然是可以的,Kotlin语言就是这样的工作原理。
Java虚拟机并不关心是从Java编译而来的,还是从Kotlin编译而来的,只要是符合规格的class文件,它都是能识别的。这也就是为何Google开发的Android操作系统,而JetBrains作为一个第三方公司可以开发出一门编程语言来开发Android应用程序的原因所在啊!
Kotlin语言的魅力所在
Kotlin的语法更加简洁。对于同样的功能,使用Kotlin开发的代码量可能会比使用Java开发的减少50%甚至更多。
另外,Kotlin的语法更加高级,相比于Java比较老旧的语法,Kotlin增加了很多现代高级语言的语法特性,使得开发效率大大提升。
而且Kotlin语言在安全性方面下了很大功夫,几乎杜绝了空指针这个全球崩溃率最高的异常。
它还具有比这些特性更为重要的特性,那就是它和Java是100%兼容的。Kotlin可以直接调用使用Java编写的代码,也可以无缝使用Java第三方的开源库。这使得Kotlin在加入了诸多新特性的同时,还继承了Java的全部财富。