kotlin——要火了❤️,你还在等什么?

其实在去年我就开发在了解Kotlin,只是由于项目的原因,还有一些人根本不知道他的存在,然后推荐给了不少人,都被否决了!

曹理鹏(iCocos)-梦工厂

百度发音:kotlin——科特林

前言:

今早睡一醒来打开手机一看,发现朋友圈被刷屏了!

其实在去年我就开发在了解Kotlin,只是由于项目的原因,还有一些人根本不知道他的存在,然后推荐给了不少人,都被否决了!

kotlin要火了,昨晚的Google I/O大会,Google宣布正式其实kotlin。

这个小时对几乎所有Android的猿类来说,应该是最震惊的,为什么呢?

因为你又有一门新的语言可以学习了,就像Swift对iOS程序员的意义意义!

当然这个消息不仅对Android程序员比较震惊,对几乎所有做iOS开发的程序也是一个值得关注的消息?为什么呢?

那你的问问Swift为什么和他长得这么像!

先来看看昨晚Google I/O 2017有哪些亮点?

TPU(用于深度学习的处理器)

Google Lens (新API,摄像头直接支持图像识别)

Google Assistan新功能

Google Home新功能

Google Photos新功能

Android支持分屏

Android支持Kotlin开发

Tango(AR)进展

Daydream(VR)进展

Google工作搜索

想了解更多请看官方发布视频与相关总结!

有人用一句话总结

AI已经无处不在了

这里是主要阐述kotlin的,上面两点中“Android支持Kotlin开发”也是我非常关注和值得开心的一件!

所以,Let`s Go

首先有任何想了解kotlin的,建议最好先看官方教程:http://kotlinlang.org/

Kotlin是什么

Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。
Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。
JetBrains,作为目前广受欢迎的Java IDE IntelliJ 的提供商,在 Apache 许可下已经开源其Kotlin 编程语言。

众所周知Android程序是运行在Java虚拟机之上的,因此从技术上来说,可以运行在JVM之上的一切都可用于开发Android应用。现在已经有很多可以生成JVM能够执行的字节码的语言,其中一些语言开始崭露头角并逐步流行起来。
现存的计算机编程语言有好几千种,JVM上的语言也有十几种(比如NBJL/Clojure/Groovy/Scala/Fantom),所以大可不必为没听说过的编程语言感到惊奇,我也就听过Groovy/Scala/Kotlin,scala比较和C语言接近,而Groovy和java很相似你肯定对gradle不陌生吧,但是Kotlin就是其中的佼佼者。

近日召开的 Google IO 2017 , Google 将 Kotlin 列为 Android 官方开发语言了,Android Studio 3.0 也默认集成了 Kotlin plugin

kotlin的历史

历史2011 年 7 月,JetBrains 推出 Kotlin 项目,这是一个面向 JVM 的新语言,它已被开发一年之久。JetBrains 负责人Dmitry Jemerov 说,大多数语言没有他们正在寻找的特性,Scala 除外,他指出了 Scala 的编译时间慢这一明显缺陷。Kotlin 的既定目标之一是像 Java 一样快速编译。

2012 年 2 月,JetBrains 以 Apache 2 许可证开源此项目,Jetbrains 希望这个新语言能够推动 IntelliJ IDEA 的销售。

Kotlin v1.0 于 2016 年 2 月 15 日发布。这被认为是第一个官方稳定版本,并且 JetBrains 已准备从该版本开始的长期向后兼容性。

在 Google I/O 2017 中,Google 宣布在 Android 上为 Kotlin 提供支持。

Kotlin设计的目的

创建一种兼容Java的语言
让它比Java更安全,能够静态检测常见的陷阱。如:引用空指针
让它比Java更简洁,通过支持variable type inference,higher-order functions (closures),extension functions,mixins and first-class delegation等实现。
让它比最成熟的竞争对手Scala语言更加简单

java的缺陷:

对象可以赋值null造成NPE
受检异常(checked exception)
属性getter,setter太烦
接口不能有实现(java8 fixed)
缺乏Lambda(java8 fixed)
方法Overloading对可读性和动态调用造成伤害。
语言层缺乏模块化支持
并发支持很糟糕
原始类型不是对象>

Kotlin优势:

创建一种兼容Java的语言
让它比Java更安全,能够静态检测常见的陷阱。如:引用空指针
让 它比Java更简洁,通过支持variable type inference,higher-order functions (closures),extension functions,mixins and first-class delegation等实现。

语言特性

轻量级:

这一点对于Android来说非常重要。项目所需要的库应该尽可能的小。Android对于方法数量有严格的限制,Kotlin只额外增加了大约6000个方法。

互操作:

Kotlin可与Java语言无缝通信。这意味着我们可以在Kotlin代码中使用任何已有的Java库;因此,即便这门语言还很年轻,但却已经可以使用成百上千的库了。除此之外,Kotlin代码还可以为Java代码所用,这意味着我们可以使用这两种语言来构建软件。你可以使用Kotlin开发新特性,同时使用Java实现代码基的其他部分。

强类型:

我们很少需要在代码中指定类型,因为编译器可以在绝大多数情况下推断出变量或是函数返回值的类型。这样就能获得两个好处:简洁与安全。

Null安全:

Java最大的一个问题就是null。如果没有对变量或是参数进行null判断,那么程序当中就有可能抛出大量的NullPointerException,然而在编码时这些又是难以检测到的。Kotlin使用了显式的null,这会强制我们在必要时进行null检查。

适用平台

只要能用Java的地方就能用Kotlin, Kotlin支持所有主要的开发工具以及服务,比如:
* IntelliJ IDEA、Android Studio和Eclipse;
* Maven、Gradle和Ant;
* spring Boot(Kotlin 支持今天正式发布!);
* GitHub,Slack,甚至Minecraft。 

分类整理一下 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的引爆点。

这里有一篇不错的入门实战教程,非常简单:http://www.jianshu.com/p/cf1f96c56150

Kotlin这里就不说了,太乏味了,最后一句话总结一下kotlin

Android届的Swift(请深刻理解其中的含义)

各位Android的同仁们,是时候了,不管是为了喜好还是为了以后的规划,你都应该停下手上的活,抽出一切空余时间进攻kotlin,相信我,不学你会后悔的,哈哈!

当然有机会我也会去了解,接触一些kotlin开发的知识,哪怕我不会转到哪上面去,这就是我们所谓的广度优先!

如果想简单入门kotlin语法和一些特点可以看这里:http://www.jianshu.com/p/1ea733ea197d

学习资源:

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

2.Kotlin官网

3.kotlin中文官网

4.kotlin的gitbook网址

曹理鹏(iCocos)-梦工厂

在线学习

Kotlin官方文档

坚持原创技术分享,您的支持将鼓励我继续创作!