学Java的颤抖吧!Kotlin成为Android官方开发语言

一年一度的 Google I/O 大会在山景城露天剧场如期开幕。对开发者来说,最值得一提的大事就是:谷歌在I/O 2017开发者大区会上宣布了安卓开发全面支持Kotlin编程语言。

Kotlin语言

对Java和安卓开发者来说,最值得一提的大事就是:谷歌在I/O 2017开发者大区会上宣布了安卓开发全面支持Kotlin编程语言。其实在之前这个语言就已经支持了安卓平台开发,但是直到今天谷歌开发者大会上才宣布对该语言的全面支持和维护。

Kotlin的简介

Kotlin背后的公司为JetBrains,著名的IDE IntelliJ IDEA便是这家公司开发的。Kotlin这种语言100%支持Java,而Java也是安卓应用开发最主要的语言之一。

Kotlin和Java一样都是基于JVM的语言,Kotlin是一门非常现代化的编程语言,谷歌称它是更高效且智能的语言。除了其简洁(减少 40% 的代码行数)、安全、简单的特性外,Kotlin 还可以方便的与现有的 Java 代码相互调用,也可以与 JavaScript 互操作,非常易于上手。

目前已有大量的安卓开发者在使用 Kotlin 做为开发语言。

相信很多人都会问:为什么Kotlin可以加入Android家族?它和java相比,在语法,可用性,UI性能和异步性方面双方孰好孰坏?接下来咱家就为您探讨探讨

Kotlin VS Java

语法简单不啰嗦

Kotlin的一个主要优点是它的简洁。 你用更少的代码获得更多的功能。

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

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

③ 方法也很简单,连 function 都缩写成了 fun

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

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

避免空指针异常

在许多编程语言中最大的痛苦 - 空指针异常。 但是使用Kotlin,这个问题得到了很好的解决

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

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

支持方法拓展

Kotlin有一个聪明的解决方案 - 扩展功能 ,帮助你摆脱所有的util类一劳永逸。扩展函数几乎是一个通常的Kotlin函数。 但是当你声明它,你需要指定的实例将具有扩展功能的类。

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

高阶函数, 函数式编程支持

所谓的高阶函数就是:可以接受函数作为参数,也可以返回函数作为结果。

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

关于性能

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

与Java互操作

Kotlin 在设计时就考虑了 Java 互操作性。可以从 Kotlin 中自然地调用现存的 Java 代码,并且在 Java 代码中也可以 很顺利地调用 Kotlin 代码。

总结

Kotlin的特性有很多,总的来说, Kotlin这门语言简化了Java , 完全是从一个是实用派的角度,而不是学院派的角度。

相比于JRuby , Jython这些一移植到JVM上的语言, Kotlin 和Java 和互操作感觉更加自然。

每个语言的流行都需要一个引爆点,就像Ruby on Rails 引爆了Ruby 一样, Android 也许就是之前不那么流行的Kotlin的引爆点。

最后附上Kotlin学习资源:

1.kotlin官方中文翻译文档网址:

https://www.kotlincn.net/docs/reference/

2.Kotlin官网

http://kotlinlang.org/

3.kotlin中文官网

https://www.kotlincn.net/

4.kotlin的gitbook网址

https://www.gitbook.com/book/hltj/kotlin-reference-chinese/details

参考文章: http://droidyue.com/blog/2017/05/18/why-do-i-turn-to-kotlin/ https://www.w2bc.com/article/239949 http://tech.it168.com/a2017/0519/3124/000003124740.shtml

原文发布于微信公众号 - Java后端生活(javaNotebook)

原文发表时间:2017-05-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python研发

一起来学Go --- (go的简介以及环境的安装)

相信大家,看到这篇文章的时候,已经自己在百度百科了解了go的发展史已经特性,再次我依然。。。。得哔哔叨一会。   ^.^

941
来自专栏老九学堂

如何零基础学习一门编程语言?

每种编程语言必然有其优点和缺点,这也决定了它有适合的应用场景和不适合的应用场景。现代软件行业,想一门编程语言包打天下是不现实的。这中现状也造成了一种现象,一个程...

1224
来自专栏青玉伏案

代码重构(四):条件表达式重构规则

继续更新有关重构的博客,前三篇是关于类、函数和数据的重构的博客,内容还算比较充实吧。今天继续更新,本篇博客的主题是关于条件表达式的重构规则。有时候在实现比较复杂...

1869
来自专栏ThoughtWorks

语言设计中的鸭子类型风格

image.png #思特沃克好声音# (图片:网络) 在动态语言的世界里一直流传着一种叫做鸭子类型的风格,其来自谚语:“如果行鸭子一样走路,像鸭子一样呱呱叫...

2797
来自专栏WeaponZhi

AI 学习之路——轻松初探 Python 篇(三)

这是「AI 学习之路」的第 3 篇,「Python 学习」的第 2 篇 Python 字符串使用和 C 语言比较类似,但还有一些我们值得注意的地方需要关注,用这...

3296
来自专栏進无尽的文章

load方法简化类的负载、结构化工程

这篇文章即是技术篇又是跟项目架构设计相关的文章,(个人是这样感觉的),一直在搜集和总结产品架构方面的技术和技巧,很多时候都是自己知道,但是不知道怎么写出来,恰好...

653
来自专栏醒者呆

融会贯通——最常用的面向对象设计原则“合成复用原则”

复用一个类的时候,多使用对象的组合/聚合的关联关系,而不是继承。 之前提到的“依赖倒转原则”,是以里氏代换原则为基础的实现开闭原则目标的手段,这一条路线涉及到的...

2798
来自专栏java思维导图

经典面试问题: Top K 之 -- 海量数据找出现次数最多或,不重复的

林冠宏 / 指尖下的幽灵 仅列举一些解决方法,事实的解决方案是非常多的。 这些问题都是面临着有如下的考虑: 内存不足以放下所有的数。 机器CPU的核数不够。 ...

3587
来自专栏韩伟的专栏

C#语言和JAVA、C++的对比学习

很早以前,就听说著名的BorlandDelphi开发者,去微软设计了一门伟大的语言C#。但是由于一直都在Linux上做开发,所以无缘拜会。直到最近几年,借手游大...

2464
来自专栏数说工作室

提取文本数据,分析师小王初上手!| 【SAS Says·扩展篇】正则表达式

文本分析很有用,数说君自己也玩过,炒鸡有意思,从论坛、网页上爬取网友的舆情数据,然后整理、统计、画图,就可以知道舆论的风暴是什么,可以知道网友最热议的话题、最想...

3406

扫码关注云+社区