简介

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 简介
标签: