这是一只有味道的螃蟹:Kotlin!

在刚刚结束的谷歌 I/O 2017 开发者大会上,官方宣布将支持 Kotlin 作为 Android Apps 开发的First-Class语言。一石激起千层浪,消息一出,立即引发了国内外相关从业者对此事件的广泛关注和热烈讨论。

对于大众来说,Kotlin 编程语言可能是相对陌生的,它究竟有何过人之处呢?

接下来,就带各位快速了解她!

Whatis Kotlin?

来自于著名的 IDE IntelliJ IDEA (Android Studio 基于此开发) 软件开发公司 JetBrains (位于东欧捷克)

起源来自 JetBrains 的圣彼得堡团队,名称取自圣彼得堡附近的一个小岛 (KotlinIsland)

一种基于JVM的静态类型编程语言

来自知名的工具开发商 JetBrains,也就决定了 Kotlin 的基因中必然包含实用与高效等特征。那我们接下来看一看 Kotlin 的特点,当然这也是我改用 Kotlin 的重要原因。

1

语法简单,不啰嗦

这是一只有味道的螃蟹:Kotlin!_第1张图片

Kotlin 支持类型推断,没有 Java 那样的啰嗦。

另外用 var 表示变量,val 表示常量更加的简洁

方法也很简单,连 function 都缩写成了 fun,平添了几分双关之意。

类的继承和实现很简单,使用:即可

Kotlin 每个句子都不需要加分号 (;)

2

空指针安全

空指针(NullPointerException 或 NPE)是我们使用 Java 开发程序中最常见的崩溃了。因为在 Java 中我们不得不写很多防御性的代码,比如这样:

这是一只有味道的螃蟹:Kotlin!_第2张图片

在 Kotlin 中空指针异常得到了很好的解决。

在类型上的处理,即在类型后面加上?,即表示这个变量或参数以及返回值可以为 null,否则不允许为变量参数赋值为 null 或者返回 null

对于一个可能是 null 的变量或者参数,在调用对象方法或者属性之前,需要加上?,否则编译无法通过。

如下面的代码就是 Kotlin 实现空指针安全的一个例子,而且相对 Java 实现而言,简直是一行代码搞定的。

这是一只有味道的螃蟹:Kotlin!_第3张图片

这是一只有味道的螃蟹:Kotlin!_第4张图片

3

支持方法扩展

很多时候,Framework 提供给我们的 API 往往都时比较原子的,调用时需要我们进行组合处理,因为就会产生了一些 Util 类,一个简单的例子,我们想要更快捷的展示 Toast 信息,在 Java 中我们可以这样做。


但是 Kotlin 的实现却让人惊奇,我们只需要重写扩展方法就可以了,比如这个 longToast 方法扩展到所有的 Context 对象中,如果不去追根溯源,可能无法区分是 Framework 提供的还是自行扩展的。

注意:Kotlin 的方法扩展并不是真正修改了对应的类文件,而是在编译器和 IDE 方面做得处理。使我们看起来像是扩展了方法。

4

Lambda, 高阶函数,Streams API, 函数式编程支持

所谓的 Lambda 表达式是匿名函数,这使得我们的代码会更加的简单。比如下面的代码就是 lambda 的应用。

所谓的高阶函数就是:

可以接受函数作为参数

也可以返回函数作为结果

举一个接受函数作为参数的例子。在 Android 开发中,我们经常使用 SharedPreference 来存储数据,如果忘记调用 apply 或者 commit 则数据修改不能应用。利用 Kotlin 中的高阶函数的功能,我们能更好的解决这个问题:

这是一只有味道的螃蟹:Kotlin!_第5张图片

当然这上面的例子中我们也同时使用了方法扩展这个特性。

Kotlin 支持了 Streams API 和方法引用,这样函数式编程更加方便。比如下面的代码就是我们结合 Jsoup,来抓取某个 proxy 网站的数据,代码更加简单,实现起来也快速。

这是一只有味道的螃蟹:Kotlin!_第6张图片

5

字符串模板

无论是 Java 还是 Android 开发,我们都会用到字符串拼接,比如进行日志输出等等。在 Kotlin 中,字符串模板是支持的,我们可以很轻松的完成一个字符串数组的组成:

这是一只有味道的螃蟹:Kotlin!_第7张图片

6

与 Java 交互性好

Kotlin 和 Java 都属于基于 JVM 的编程语言。Kotlin 和 Java 的交互性很好,可以说是无缝连接。这表现在:

Kotlin 可以自由的引用 Java 的代码,反之亦然。

Kotlin 可以现有的全部的 Java 框架和库

Java 文件可以很轻松的借助 IntelliJ 的插件转成 kotlin

7

Kotlin 应用广泛

Kotlin 对 Android 应用开发支持广泛,诸多工具,比如 kotterknife (ButterKnife Kotlin 版),RxKotlin,Anko 等等,当然还有已经存在的很多 Java 的库都是可以使用的。

除此之外,Kotlin 也可以编译成 Javascript。最近使用 Kotlin 写了一段抓取 proxy 的代码,实现起来非常快捷。甚至比纯 JavaScript 实现起来要快很多。

这是一只有味道的螃蟹:Kotlin!_第8张图片

8

关于性能

Kotlin 的执行效率和 Java 代码的执行效率理论上一致的。有时候 Kotlin 可能会显得高一些,比如 Kotlin 提供了方法的 inline 设置,可以设置某些高频方法进行 inline 操作,减少了运行时的进栈出栈和保存状态的开销。

读到这里,是不是想要尝试一下 Kotlin 呢,它简洁的语法,汇集诸多特性,高效率实现等等,已经在国外风生水起,国外的 Pintereset, Square, Flipboard 等公司已经开始应用到生产中。

Whocare Kotlin?

Kotlin 适用于多个平台,并没有对学习者做限制。任何有学习意愿的人都可以习得这门语言。

但是考虑到国内 Kotlin 资源不够丰富,网络不够畅通等问题,所以导致了很多人变成了吃瓜群众进行观望。

然而,对于一个项目和团队来说,总需要有第一个人先来推进。而且这个推进过程并非顺利,这其中包括

首先你需要足够了解 Kotlin

你需要说服团队,这期间你会接收到很多 challenges,有时候你会很沮丧和生气

你需要提供一系列的资料或分享,比如如何配置,sample code, troubleshooting 等等

有时候甚至你经常兼职做 mentor 指导工作,这也就意味着你的手头上的其他工作需要被打断

关于哪些人适合率先应用 Kotlin,我认为需要具备以下几点

Java 技术和基础要好,这一点很重要

英语要好,因为目前 Kotlin 的资料几乎都是英文的,当然也推荐看英文的

愿意承担在项目团队推进工作,有耐心,敢挑战,负责任

Beyond  Kotlin!

Android 程序员和其他程序员甚至其他职业并无二致,我认为这种竞争力表现在解决问题的能力。想要具备这种能力,极其依赖我们对问题和技术的准确认识和扎实的基础。

编程语言本质上还是工具,好的工具能带来更好的效果,但是如何运用好,将效率和质量提升到最高,则还是更主要的依赖于开发者的能力。

选用好的工具,更侧重夯实基础和加强对事物本质认识的能力,我想这样才能让我们的竞争力更强。

总结而言,Kotlin 是一个更好的工具,没有它,并不影响我们日常的 Android 开发工作。但是我还是建议开发者和团队去尝试这种语言,抓住这个近在咫尺的小确幸。

“呐,做人呢,最重要的就是开心啦”

Kotlin 是一门实用语言,这是它的基因,它不是学术语言,它的目标是减轻开发者的负担。

Kotlin,是基于 JVM 的编程语言,但是基于 JVM 的编程语言并没有什么不好。这种 tradeoff 其实更加有利于人的一侧,这也是编程语言发展的趋势和目标


微信扫一扫

关注该公众号

新媒体管家

样式采集与收藏

采集

你可能感兴趣的:(这是一只有味道的螃蟹:Kotlin!)