学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的基础知识是远远不够的,还必须懂得常用数据结构、算法、网络、操作系统等知识。因此本文不会讲解具体的技术,笔者综合自...

701
来自专栏一个会写诗的程序员的博客

在 Java 9 的JShell中 跟Kotlin 的REPL中尽情体验函数式编程乐趣吧《Kotlin极简教程》正式上架:

相比之下, 我们不得不说,Java 8,9中的 Stream API 还是有点啰嗦,绕来绕去。不如Kotlin来得直截了当,简单优雅。

901
来自专栏瓜大三哥

HLS Lesson19-函数层面优化

1.Coding Style on function 主要是数据类型,应该定义为HLS专用的数据类型ap_int<W> 2.inline:去除了函数的层次化,...

2349
来自专栏Python研发

设计模式 -- 常用设计模式

                                  ——可复用面向对象软件的基础

3311
来自专栏Android群英传

我与 Kotlin 的爱恨情仇之浅谈 block

1244
来自专栏我是攻城师

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

2984
来自专栏racaljk

关于llvm kaleidoscope: 记一次Debug血泪之路

简而言之,慎(bu)用(yong)全局变量!                                

1351
来自专栏程序人生

如何愉快地写个小parser

(一) 在前几日的文章『软件随想录』里,我随性写了一句:「现在似乎已经不是lex/yacc 或 bison/flex的时代了。我亲眼看见一个同事在费力地用per...

5819
来自专栏斑斓

响应式编程的实践

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

3868
来自专栏Linyb极客之路

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

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

3.9K2

扫码关注云+社区

领取腾讯云代金券