内容简介
- 前言
- Kotlin的名字由来
- Kotlin是什么
- Kotlin的优势
- Kotlin学习资源
- 总结
1. 前言
随着谷歌在 2017 年 5 月的 Google I/O 中宣布 Kotlin 这门编程语言成为 Android 新官方语言,近来掀起了一阵 Kotlin 学习热潮。
2. Kotlin的名字由来
一般我们介绍事物或人时,总是先从名字入手。比如有人也许会这样自我介绍:「我叫小明,不是黄晓明的晓明。我爸妈当初为什么要给我起这个优(keng)秀(die)的名字呢?blablabla ... 」。
我们要认识 Kotlin,也可以从它的名字开始。
Kotlin 来源于一个岛屿的名字,全称是 Kotlin Island,是英语「科特林岛」之意。这个小岛属于俄罗斯,我们用互联网来搜索一下,它是在下图中红色标记的位置:
科特林岛位于俄罗斯的圣彼得堡以西约30公里处,形状狭长,东西长度约14公里,南北宽度约2公里,面积有16平方公里,扼守俄国进入芬兰湾的水道。
拉近点看更清楚:
圣彼得堡也就是以前的列宁格勒。
那么 Kotlin 编程语言为什么要选这个看似名不见经传的小岛来作为自己的名字呢?
这就不得不说说 Kotlin 语言的开发者 JetBrains 公司了。
JetBrains 官网而 Google 推出的 Android 官方集成开发环境 Android Studio 就是基于 IntelliJ IDEA 。
这样说也许不准确,应该说 Android Studio 和 IntelliJ IDEA 的 Android 插件 是从同一个源码开始构建的。现在 Google 负责开发 Android Studio,等 Android Studio 发布之后,IntelliJ IDEA 再把 Google 的插件拿去测试并发布。
或者说,Android Studio 纯粹用于 Android 开发。IntelliJ IDEA 能做的事情比较多,但是不专精于 Android 开发。而且因为上面说到的顺序问题,IntelliJ IDEA 的 Android 插件是会相对滞后于 Android Studio 的。因此做 Android 开发最好用 Android Studio。
目前 Android Studio 所用的 JVM(JVM 是 Java Virtual Machine 的缩写,也就是「Java 虚拟机」的意思)是 JetBrains 公司的,见下图 Android Studio 的介绍:
看到上图中那行「JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o 」了吗?
接着,我们可以点击 JetBrains 主页的 IDEs 那个菜单进去看看,可以看到有 12 个 IDE :
上面的 IDE 中,除了刚才介绍过的 IntelliJ IDEA,比较著名的有:
-
WebStorm :做网络开发的朋友应该有用过,极为强大的 JavaScript 集成开发环境。被广大中国 JS 开发者誉为「Web 前端开发神器」、「最强大的 HTML5 编辑器」、「最智能的 JavaScript IDE」等。我以前略微用过。
-
PyCharm :结合了 Django 框架的 Python 集成开发环境。我在工作中写 Python 程序喜欢用 PyCharm。
-
PhpStorm :号称「世界上最好的编程语言」PHP 的集成开发环境。
-
CLion :C 和 C++ 集成开发环境。
-
RubyMine :结合了 Ruby on Rails 框架的 Ruby 集成开发环境。
-
Gogland :Go 语言的集成开发环境。
感觉 JetBrains 出品的各个 IDE 长得都比较像。这些年 JetBrains 在 IT 界可谓是风生水起。几乎可以说:「JetBrains 出品,必属精品」。不禁联想到当年「暴雪出品,必属精品」的口碑。
Kotlin 的主要开发工作是由俄罗斯的圣彼得堡分公司的程序员团队完成的。
他们说:Java 语言的名字是来自于一个岛,那个岛就是印度尼西亚的爪哇(Java)岛,因盛产咖啡而闻名。所以 Kotlin 也得选一个岛作为名字。
我们所见到的 Java 标志,总是一杯热咖啡。Java 语言的许多库的类名称,多与咖啡有关:如 JavaBeans(爪哇豆)、NetBeans(网络豆)以及 ObjectBeans(对象豆)等等。bean 是英语「豆」的意思,咖啡豆就是 coffee bean。
由此看来,Kotlin 确实有取代 Java 的雄心。
当然了,许多语言都认为自己可以取代 Java。比如目前有 Scala、Fantom、Groovy、Gosu、和 Ceylon,而 Scala 和 Groovy 最为流行。
但 Kotlin 已经被 Google 钦点为 Android 开发第一语言,相当于「黄袍加身」,其命运当非其他语言可比。
3. Kotlin是什么
知道了名字的由来和背后的老大们,我们进一步来认识一下 Kotlin 本人。
Kotlin 当然是一门编程语言,但它并不是「新出炉的面包」,从 2010 年就开始「烘焙」了。
说一点 Kotlin 的历史:
- 2010 年 :JetBrains 着手开发 Kotlin。
- 2011 年 7 月 :JetBrains 公开宣布 Kotlin。
- 2012 年 2 月 :JetBrains 在 Apache 2 许可证下开源了 Kotlin 的源码。目前 Kotlin 的官方源代码在 Github 上 。
- 2016 年 2 月 :JetBrains 发布了 Kotlin 1.0 版,算是比较稳定的正式版。许诺之后一直会保持向后兼容。
- 2017 年目前最新版本 :1.1.2(2017 年 6 月)。相比 Kotlin 1.0 版本时,和 Kotlin 有关的代码数目从 210 万行飞升到 1000 多万行。
Kotlin 是基于 JVM 的静态类型编程语言,而 Java 也是基于 JVM 的编程语言,那么 Kotlin 比 Java 究竟有哪些优势呢?
4. Kotlin的优势
在 Kotlin 之前,JetBrains 团队一直使用 Java 来创建他们的 IDE。那为什么他们要开发一门新的编程语言呢?
JetBrains 团队之所以开发 Kotlin 这门新语言,是因为他们对已经存在的语言略有失望。这和 Go 语言的发明动机类似。
当时,Java 和其他语言都不能满足 JetBrains 的需求,而 Scala 语言虽然不错,但无奈编译时间太长,于是 Kotlin 因运而生。
Kotlin 从不少语言获得灵感,比如 Java、Scala、Groovy、C#、Gosu,可以说是博采众长。既具备了快速开发的能力,编译运行也快,实现相同功能的代码长度可以比 Java 少很多。
我们来列举一下 Kotlin 的主要优势:
-
开源:闭源项目总归比较有限。众人拾柴火焰高,代码开源可以更快速地发现 Bug,有了全世界各地程序员的贡献,Kotlin 的优秀代码和库会越来越多。Linux 系统就是开源的很好例子。
-
安全 :大家聊得最多的肯定是可以轻松防止在 Java 中很常见的 NullPointerException(空指针异常)问题咯。做 Android 开发的一定深有体会,一般 app 奔溃,基本都是因为 NullPointerException,很多时候规避机制就是加一个 if 语句的判断,很累赘。
-
容易学习 :Kotlin 语法很简单,和主流语言类似,语法高效,入门非常容易。好比当初苹果发布 Swift 也是因为 Objective-C 的语法奇怪,学习曲线比较陡峭。
-
Lambda 表达式。
-
变量类型推断。
-
when 语句块 :告别繁琐的 switch 和 if... else if... else 语句块。
-
非常方便的运算符重载。
-
不再需要手动添加 get 和 set 方法对了,直接对类的私有变量赋值和取值。
-
函数/方法 的关键字是 fun,而不是 function。真的很简洁也很有趣(fun 是英语「有趣」的意思)。
-
Var 和 Val 关键字 :和 fun 关键字类似,也很简洁。Var 是 Variable(英语「可变的」之意)的缩写,表示「可变的」变量。Val 大概是 Value (英语「值」之意)的缩写,表示只能赋值,而不能改写其值,是表示「只读的」变量,有点类似 C 语言中的 const 变量。这两个关键字的起名估计是参考了 Scala 语言。
-
类的方法扩展很方便。
-
可以创建自定义的 DSL(领域特定语言)。
-
优秀工具的支持 :JetBrains 公司开发了那么多优秀的工具,Kotlin 可以完全享用。
-
Coroutine :协程。
可以用下图来大致总结 Kotlin 的主要优势:
图片来自 Programiz当然了,Kotlin 的优势肯定不止这些,篇幅关系我们不可能一一列举。之后的课程中,会让大家见识的。
正是因为 Kotlin 的这些优势,才得到 Google 的垂青,新出任 Android 开发第一把交椅。现在 Android 还是很火的,国内貌似 iOS 开发的热度稍微下降了些,但各大学习平台上 Android 的火爆程度还是很高,虽然要找个好的 Android 开发职位比以前难了。
现在 Android 和 Kotlin 一联手,那家伙,简直是「AK47」啊。
专治各种不服很多大公司也早已开始用 Kotlin 了,例如 Pinterest,Netflix,Gradle,Uber(个人对 Uber 公司的企业文化比较反感),Trello :
使用 Kotlin 的大公司有了这么多大公司的支持,开源社区的维护,Kotlin 要再没有明天那简直「天理不容」啊。
5. Kotlin学习资源
中外 Kotlin 学习资源。
英语资源
中文资源
6. 总结
-
首先,如果你自学能力比较强,英语比较好,那完全可以根据上面提供的各种 Kotlin 资源着手学习了,都不用继续看我的教程了。没想到,我拆自己台的功力还是蛮强的 :P
-
现在不少新的编程语言都挺类似的。新开发的语言更像是已有语言优秀特性集合的产物。Kotlin 和 苹果 iOS 的官方语言 Swift 就挺像。
-
Kotlin 的未来应该是比较光明的,因为 Google 将其作为 Android 新的官方语言,又有 JetBrains 这样大牌的软件公司做后盾,而且还有那么多大公司在使用,开源社区在维护。
-
如果不是为了 Android 开发,那也可以学习一下 Kotlin,毕竟 Kotlin 也能做其他事情。程序员要做到「一专多能」,精通一个领域,多接触其他领域。比如目前 Python(人工智能等领域的新贵)值得学习,Go 语言(被称为 21 世纪的 C 语言,著名的 Docker 就是用 Go 语言开发的)也很不错。即使不用来做开发也应该了解一下,紧跟 IT 潮流。
-
作为程序员,真的需要花点功夫把英语入门了。水平不用太高,有些不懂的词可以用有道词典、金山词霸等查,但应该具备基本的英语理解能力,因为很多新语言的资源都是英语的,而中文翻译的工作虽然有人做,但一方面需要时间,另一方面难以保证最新,更何况还难以保证翻译的质量。英语好,你就比别人先行一步。
文中如有错误,欢迎指出,会更正,谢谢。