kotlin的介绍

2017年5月18日谷歌在 Google I/O 2017打回上宣布Kotlin成为Android开发的一级语言,并在Android Studio3中提供相应的支持。 谷歌称其”简洁“,变现力强,具有类型安全和空值安全的特点,也可以与Java进行完整的互操作。kotlin人突然成为Android开发中的热门话题。

promo

Kotlin是一个基于JVM的编程语言,由 JetBrains 开发。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。

Kotlin 能够跟 Java 进行相互调用。对于已有的项目,一些新的功能和模块可以尝试使用 Kotlin 来编写;对于新的项目完全可以考虑使用 Kotlin,由于 Kotlin 能够跟 Java 相互调用,即便使用 Kotlin 遇到问题,也可以再使用 Java 进行替换。

Kotlin 是一门函数式编程语言,它相对于 Java 具有很多优势。由于 JetBrains 开发了它, Kotlin 更注重工程性和实用性,它拥有现代静态编程语言的很多特点,例如:类型推断、多范式支持、可空性表达、扩展函数、DSL 等等。编程时使用这些特性,能达到事半功倍的效果。随着 Kotlin 1.3 的到来,Coroutines 进入稳定版本,未来可以在生产环境中使用 Coroutines 。

Why kotlin ?

  • 简洁

大大减少样板代码的数量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*
使用一行代码创建一个包含 getters、 setters、 `equals()`、 `hashCode()`、 `toString()` 以及 `copy()` 的 POJO:
*/

data class Customer(val name: String, val email: String, val company: String)

// 或者使用 lambda 表达式来过滤列表:

val positiveNumbers = list.filter { it > 0 }

// 想要单例?创建一个 object 就可以了:

object ThisIsASingleton {
val companyName: String = "JetBrains"
}

  • 安全

避免空指针异常等整个类的错误

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
彻底告别那些烦人的 NullPointerException——著名的十亿美金的错误
*/

var output: String
output = null // 编译错误

// Kotlin 可以保护你避免对可空类型进行误操作

val name: String? = null // 可空类型
println(name.length()) // 编译错误

// 并且如果类型检测正确,编译器会为你做自动类型转换

fun calculateTotal(obj: Any) {
if (obj is Invoice)
obj.calculateTotal()
}

  • 互操作性

充分利用 JVM、Android 和浏览器的现有库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
使用 JVM 上的任何现有库,因为有 100% 的兼容性,包括 SAM 支持。
*/

import io.reactivex.Flowable
import io.reactivex.schedulers.Schedulers

Flowable
.fromCallable {
Thread.sleep(1000) // 模仿高开销的计算
"Done"
}
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.single())
.subscribe(::println, Throwable::printStackTrace)

// 无论是面向 JVM 还是 JavaScript 平台,都可用 Kotlin 写代码然后部署到你想要的地方

import kotlin.browser.window

fun onLoad() {
window.document.body!!.innerHTML += "<br/>Hello, Kotlin!"
}

  • 工具友好

可用任何 Java IDE 或者使用命令行构建