学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 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

Java高级软件工程师面试考纲

如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构、算法、网络、操作系统等知识。因此本文不会讲解具体的技术,笔者综合自...

411
来自专栏大数据钻研

Java高级软件工程师面试考纲

如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构、算法、网络、操作系统等知识。因此本文不会讲解具体的技术,笔者综合自...

33814
来自专栏CSDN技术头条

不服来战,看Kotlin如何完爆Java

前言:Kotlin因支持谷歌和简化Android开发而声名鹊起。看看它如何解决Java的许多痛点。 Why Kotlin? 如果我今天被问到如何区别开发Andr...

1975
来自专栏Linyb极客之路

工作流引擎之activiti6实时流程图追踪

有接触过activiti的朋友可能知道,在activiti5.x的追踪流程节点查找,可以用

1.1K2
来自专栏斑斓

响应式编程的实践

作者 | 张逸 特别说明:本文包含大量代码片段,若要获得更好阅读观感,请点击文末“阅读原文”或访问我的博客。 响应式编程在前端开发以及Android开发中有颇多...

3518
来自专栏醒者呆

缘分一道桥——桥接模式

桥接模式是一种很实用的结构型设计模式,它是将抽象部分与它的实现部分分离,使他们都可以独立地变化。 首先介绍一个标准的桥接模式的使用场景: 如果我想买汽车Ca...

3567
来自专栏AndroidTraveler

责任链模式妙用

除了应用场景比较多的单例模式你能够信手拈来,其他的可能会觉得有点难以掌握。也许压根都没用过。

1003
来自专栏从流域到海域

Python 条件判断

Python if语句 格式:注意不要漏写:这是容易犯错的地方。 if语句包含两部分,判断部分和执行部分,只有在判断部分得到的布尔值为True时,才会执行执...

19510
来自专栏熊二哥

.NET工作准备--01前言

01应聘须知(已过时) -1.了解软件开发大环境。 -2.准备简历:不宜超过一页,永远准备中文,模板。 -3.渠道:3大网站,中华英才,前程无忧(51job最...

2018
来自专栏我是攻城师

Java高级软件工程师面试考纲

2744

扫码关注云+社区