Kotlin 学习系列之Kotlin简介

简介

Kotlin (cot-lin) 是一种针对 Java 平台的编程语言。大概与 2010 年Kotlin诞生于 JetBrains 公司 (就是那个开发了不少很好用的 IDE 的公司)。Kotlin 以靠近俄罗斯圣彼得堡的一座岛屿命名 (我以为这个应该是学习 Java 的)。Kotlin 的特性是简洁 , 安全,实用,专一于和 Java 的互操做性。能够应用在服务端开发, Android 开发。编程


Kotlin 主要特性

Kotlin 几乎能够运行在如今 Java 语言运行的任何地方,可是它相比较于 Java 语言更简洁, 更高效 , 更安全 , 实用性很强,摈弃了一些为了迎合某些概念而产生的代码,好比说 Java 中常见的无状态工具类,其中全是静态函数,由于 Java 号称是纯面向对象的编程语言,可是现实情况中并非全部场景下都须要拥有一个对象才能进行工做。好比说 Java 中的匿名类,匿名对象。 除了 Java 语言以外,Kotlin 还能够被编译成 JavaScript ,容许在浏览器中运行 Kotlin 代码。浏览器

静态类型

Kotlin 是一种静态类型的编程语言和 Java 同样,全部表达式的类型是在编译期间就已经肯定了的 。安全

智能类型推断

Kotlin 与 Java 不一样的是不须要在源码中显示的声明每一个变量的数据类型。在不少状况下变量的类型是能够根据上下文推断出来的,这样就省略了类型声明,这样就能够省略掉不少没必要要的代码,你的代码将会变得更加简短,清晰。多线程

函数式编程

函数式编程的核心概念:
头等函数 —— 把函数 (一小段行为)看成值使用,能够用变量保存它,把它作为参数传递,或者看成其余函数的返回值。
不可变性 —— 使用不可变对象,这保证了它们的状态在建立以后再也不会改变。
无反作用 —— 使用的是纯函数。此类函数在输入相同时候会产生一样的结果,而且不会修改其余对象的状态,也不会和外界产生交互。编程语言


函数式编程风格的代码最大的好处就是简洁,可以避免不少重复的代码还有没必要要的类声明,由于不少状况下你须要的仅仅只是一个函数,而不是类和对象如此沉重的内容。函数式编程的另外一个好处就是线程安全性。函数式编程


Kotlin 对函数式编程的支持:
函数类型,容许函数接受其余函数做为参数,或者返回其余函数。
lambda 表达式,用最少的样板代码方便的传递代码块。
数据类,提供了建立不可变值对象的简明语法。
标准库中丰富的API集合,能够用函数式编程风格操做对象和集合。函数


Kotlin 实用性

Kotlin 的使用性体如今它解决了不少实际编程过程当中遇到的问题,以及一些让开发人员感受到怪异或者繁琐别扭的一些状况。好比不少状况下我再编写 Java 代码,我在调用一个函数的时候须要传入一个接口类型的参数,而这个接口只有一个函数,此时我只须要一个函数就能够搞定问题,我并不想花一些时间再去编写一个类实现这个接口。再好比强制类型转换的问题,当我在 Java 代码中用 instanceof 检测了某个对象是否属于某个数据类型为 true 时,却还要强制的进行一次类型转换。这让我感受到很麻烦和多余。总的来讲 Kotlin 并无为了迎合某些编程理念去牺牲实用性,反而实用性是最为重要的一点。
Kotlin 设计的目的就是尽量的依赖已经出现再其余编程语言中而且被证明了成功的哪些特性和解决方案,这下降了语言的复杂性,让kotlin更加容易学习。工具


Kotlin 的简洁性

在 Kotlin 中实用是很重要的,Kotlin 会努力保证你写的代码都是有实际的意义,而不只仅是为了知足代码结构的须要,或者是为了迎合一些编程理念。在 Kotlin 中许多在 Java 中出现的样板代码 ,好比 getter ,setter ,以及在构造函数中给成员变量赋值的样板代码在 Kotlin 中都是隐式的。智能类型推断,运算符重载,对函数式编程的支持都可以使你的代码变得简洁。性能


Kotlin 的安全性

Kotlin 试图实现比 Java 更高的安全级别,同时保持比较低的成本。作为面向 JVM 的静态类型语言,Kotlin 保证了应用程序的类型安全。这比使用 Java 的成本要更低,不须要指定全部的类型声明,由于许多状况下编译器会从上下文中自动推断出变量的类型。本来在运行时失败的错误在编译器检查中就被阻止了,好比 NullPointerException ,Kotlin 的类型系统跟踪哪些能够或不能够为 null 的值,而且禁止哪些运行时可能致使 NullPointerException 的操做,若是你对一个可 null 的变量上没有通过是否为 null 就作了操做,那么连编译都不能经过。另外一个异常类型时 ClassCastException , ,当你把一个对象转换成一种类型,而没有事先检查它是不是该类型时,就会发生这个异常。在 Kotlin 中检查和转换被组合成了一次操做:一旦检查过类型,不须要要额外的转换就能直接引用属于该类型的成员。这样,开发者就没有理由跳过检查,也不会给潜在的运行时错误留下可乘之机。学习


Kotlin 与 Java 互操做性

Java 开发者在使用 Kotlin 以前最关心的一个问题应该是:“我是否是能够继续使用现有的 Java 语言编写的库?”。答案固然是确定的, Kotlin 对这方面给出了最高的保证,不管须要使用那种库提供的 API ,均可以在 Kotlin 中使用它。能够调用 Java 的方法, 继承 Java 的类和实现 Java 接口,在 Kotlin 上应用 Java 的注解等等。Java 和 Kotlin 能够绝不费力的互相调用。Kotlin 在最大程度上使用了现有的 Java 库,好比集合库 Kotlin 没有本身的集合库, 而是彻底依赖于 Java 标准库的集合库,使用额外的扩展函数来扩展他们的功能。同时在工具层面 IDEA 也给予了很好的支持, 提供了一个 Java 代码与 Kotlin 代码的转换器。自由的在 Java 和 Kotlin 源码文件之间切换。调试混合语言的项目,能够在不一样语言编写的代码之间进行单步调试。重构 Java 方法的时候,Kotlin 代码中对他们的调用也会获得正确的更新,反之亦然。


总结

  • Kotlin 是静态类型语言而且支持智能类型推导,容许维护正确性与性能的同时保持代码的简洁。
  • Kotlin 支持面向对象和函数式两种风格的编程,经过头等函数使更高级别的抽象成为可能,经过支持不可变值简化了测试和多线程开发。
  • 在服务端应用程序中能够很好的工做,全面支持现有的 Java 库,为常见的任务提供了新工具,好比生成 HTML 和持久化。
  • 在 Android 上也能够工做。
  • Kotlin 免费开源,全面支持主流的 IDE 和构建系统。
  • Kotlin 务实,安全,简洁,与 Java 互操做,意味着它专一于使用已经证实过的解决方案处理常见任务,防止容许时常见的 NullPointerException 这样的错误,支持紧凑易读简洁的代码,以及与Java无限制的集成。

内容参考自:


建立了一个 Kotlin 学习交流群有兴趣的同窗能够加群一块儿交流学习

相关文章
相关标签/搜索