Kotlin相对于Java的优势比较(2)

屏幕快照 2017-05-18 下午 3.46.40.png

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

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

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

屏幕快照 2017-05-18 下午 3.47.49.png

所谓的高阶函数就是:

可以接受函数作为参数

也可以返回函数作为结果

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

屏幕快照 2017-05-18 下午 3.49.00.png

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

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

屏幕快照 2017-05-18 下午 3.49.30.png

字符串模板

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

屏幕快照 2017-05-18 下午 3.51.08.png

注意:关于字符串拼接可以参考这篇文章 Java 细节:字符串的拼接

与 Java 交互性好

Kotlin相对于Java的优势比较

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

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

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

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

Kotlin 应用广泛

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

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

屏幕快照 2017-05-18 下午 3.52.17.png

关于性能

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

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

关于转向 Kotlin

其实,我在做决定之前(当时 Kotlin 还没有被钦定)也曾有过考虑,是不是选择了 Kotlin 就意味着放弃 Java 呢,冷静下来想一想,其实并不是那么回事,因为 Kotlin 与 Java 语法太相近,以及在 Kotlin 中无时无刻不在和 Java 相关的东西打交道,所以这点顾虑不是问题的。

对于个人的项目来转向 Kotlin,通常不是很难的选择,毕竟 Kotlin 是那么优秀的语言,相信很多人还是愿意尝试并使用这个事半功倍的语言的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0a7e9c55a62713a162916e926a64138d.html