1.1 Kotlin介绍
近日,谷歌宣布,将Kotlin语言作为安卓开发的一级编程语言。Kotlin由JetBrains公司开发,与Java 100%互通,并具备诸多Java尚不支持的新特性。谷歌称还将与JetBrains公司合作,为Kotlin设立一个非盈利基金会。
扒一扒Kotlin 的历史:
- 2010 年 :JetBrains 着手开发 Kotlin。
- 2011 年 7 月 :JetBrains 公开宣布 Kotlin。
- 2012 年 2 月 :JetBrains 在 Apache 2 许可证下开源了 Kotlin 的源码。目前 Kotlin 的官方源代码在 Github 上 https://github.com/JetBrains/kotlin 。
- 2016 年 2 月 :JetBrains 发布了 Kotlin 1.0 版,算是比较稳定的正式版。许诺之后一直会保持向后兼容。
- 2017 年目前最新版本 :1.1.2(2017 年 6 月)。相比 Kotlin 1.0 版本时,和 Kotlin 有关的代码数目从 210 万行飞升到 1000 多万行。
JetBrains在2010年首次推出Kotlin编程语言,并在次年将之开源。新版的Android Studio(3.0)也将提供支持,国内可在此下载。JetBrains公司最新版的IntelliJ IDEA Community 同样支持。
Kotlin名字的由来是源于一座俄罗斯的岛屿科特林岛(Котлин),位于圣彼得堡以西约30公里处,形状狭长,东西长度约14公里,南北宽度约2公里,面积有16平方公里,扼守俄国进入芬兰湾的水道。科特林岛上建有喀琅施塔得市,为圣彼得堡下辖的城市。(google map,维基百科-中文,维基百科-英文)
Kotlin的源代码存储库,包括IntelliJ IDEA插件,可在GitHub下载。该插件的编译版本也可以下载。
Kotlin 主要特性:
- 开源
- 绑定 IntelliJ IDEA 15
- 高效安全的并发
- 提供 Android Studio,Eclipse,Maven,Gradle 和 Ant 插件
- 包含一个 REPL
Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。
其主要设计目标:
- 创建一种兼容Java的语言
- 让它比Java更安全,能够静态检测常见的陷阱。如:引用空指针
- 让它比Java更简洁,通过支持variable type inference,higher-order functions (closures),extension functions,mixins and first-class delegation等实现。
- 让它比最成熟的竞争对手Scala语言更加简单。
总的来说Kotlin 的主要优势:
- 多平台开发的可能 :基于 JVM 的开发,Android 开发,Web 开发,Native(原生)开发。其中 Web 开发可以结合 Spring 框架,而且 Kotlin 也可以编译生成 JavaSript 模块,可以在一些 JavaScript 的虚拟机上编译。Native 开发就更牛了,目前 Kotlin 官方在 Github 开源了 Native 开发的源码 https://github.com/JetBrains/kotlin-native,基于 LLVM(Low Level Virtual Machine 的缩写,表示「底层虚拟机」。LLVM 是一种编译器基础设施,以 C++ 写成。它是为了任意一种编程语言而写成的程序,利用虚拟技术创造出编译时期、链接时期、运行时期以及闲置时期的最优化)的后端,方便为各个平台编写原生应用,比如为 Mac OS,iOS,Linux,嵌入式系统,等等。
- 开源:闭源项目总归比较有限。众人拾柴火焰高,代码开源可以更快速地发现 Bug,有了全世界各地程序员的贡献,Kotlin 的优秀代码和库会越来越多。Linux 系统就是开源的很好例子。
- 和 Java 100% 兼容 :Kotlin 调用 Java 已有的代码或库没有问题。在一个项目中也可以同时用 Java 和 Kotlin 来编写代码。Android Studio 和 IntelliJ IDEA 都可以实现一键转换 Java 代码到 Kotlin。官方也有专页介绍:https://www.jetbrains.com/help/idea/2017.1/mixing-java-and-kotlin-in-one-project.html
- 安全 :大家聊得最多的肯定是可以轻松防止在 Java 中很常见的 NullPointerException(空指针异常)问题咯。做 Android 开发的一定深有体会,一般 app 奔溃,基本都是因为 NullPointerException,很多时候规避机制就是加一个 if 语句的判断,很累赘。
- 容易学习 :Kotlin 语法很简单,和主流语言类似,语法高效,入门非常容易。好比当初苹果发布 Swift 也是因为 Objective-C 的语法奇怪,学习曲线比较陡峭。
- Lambda 表达式。
- 变量类型推断。
- when 语句块 :告别繁琐的 switch 和 if… else if… else 语句块。
- 非常方便的运算符重载。
- 不再需要手动添加 get 和 set 方法对了,直接对类的私有变量赋值和取值。
- Anko 这样的 Kotlin 的官方库可以使 Android 应用开发更快捷。
- 函数/方法 的关键字是 fun,而不是 function。真的很简洁也很有趣(fun 是英语「有趣」的意思)。
- Var 和 Val 关键字 :和 fun 关键字类似,也很简洁。Var 是 Variable(英语「可变的」之意)的缩写,表示「可变的」变量。Val 大概是 Value (英语「值」之意)的缩写,表示只能赋值,而不能改写其值,是表示「只读的」变量,有点类似 C 语言中的 const 变量。这两个关键字的起名估计是参考了 Scala 语言。
- 类的方法扩展很方便。
- 可以创建自定义的 DSL(领域特定语言)。
- 优秀工具的支持 :JetBrains 公司开发了那么多优秀的工具,Kotlin 可以完全享用。
- Coroutine :协程。
Kotlin的一些学习参考资料:
- 首先自然是官网:http://kotlinlang.org/
- Github:https://github.com/JetBrains/kotlin
- 官方文档:http://kotlinlang.org/docs/reference/
- 官方文档pdf[英文]:http://kotlinlang.org/docs/kotlin-docs.pdf
- 开发者社区:http://kotlin.cn
- 晓_晨DEV翻译的Kotlin中文站:http://tanfujun.com/kotlin-web-site-cn/
资源站:
https://github.com/KotlinBy/awesome-kotlin
Kotlin 资源大全,包括教程文章、开源库和框架、Demo 等
https://github.com/hussien89aa/KotlinUdemy
https://github.com/ReactiveX/RxKotlin
https://github.com/huanglizhuo/kotlin-in-chinese
工具下载