目录

Kotlin系列(一):Kotlin初探

一、前言:

1、Kotlin 是什么?

  • kotlin的相关介绍网上一大堆,不过这里还是做一下简单的介绍
  • Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains(JetBrains作为目前广受欢迎的 Java IDE IntelliJ的提供商) 开发,在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift。在 Apache 许可下已经开源其Kotlin 编程语言。

2、Kotlin能做什么?

  • 基于JVM:Kotlin既然作为一个基于JVM的编程语言,其自然是可以编译成Java字节码,这是不必说的,当他作为最终编译为Java字节码运行的时候,其也就具备了Java的跨平台性能。也就是说其继承了Java的跨平台的优点。

  • JavaScript支持:Kotlin其还可以编译成 JavaScript,方便在没有 JVM 的设备上运行,也就是说你可以用Kotlin编写代码,然后编译为JavaScript在js引擎下运行,如果对js不熟的同学,不妨一试。

  • Native支持:更厉害的,Kotlin还在往Native方向努力,通过Kotlin的代码转换为Native代码。而Native代码,一般是值通过C/C++编写的代码, 其运行效率是没得说的。

  • 静态语言:Kotlin的设计之处就是定位为一门静态语言,有静态语言,当然就会有动态语言这一类型。像C/C++、Java、C#、OC/Swift这些基本都是静态类型;而不需要编译的解释型语言,一般都是动态类型。从类型的强弱来看,Kotlin 是一种强类型(强类型定义语言是类型安全的语言)的语言,拥有与 Java 类似的类型系统。

  • 静态语言(强类型语言)概念:静态语言是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。 例如:C++、Java、Delphi、C#等。
  • 动态语言(弱类型语言)动态语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。 例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等。
在这里我们再介绍一下静态语言跟动态语言的区别:
  • 静态语言(强类型语言)是一旦变量的类型被确定,就不能转化的语言。
  • 动态语言(弱类型语言)则相反,一个变量的类型是由其应用上下文确定的。
静态语言的优势
    1. 由于类型的强制声明,使得IDE有很强的代码感知能力,故,在实现复杂的业务逻辑、开发大型商业系统、以及那些生命周期很长的应用中,依托IDE对系统的开发很有保障;
    1. 由于静态语言相对比较封闭,使得第三方开发包对代码的侵害性可以降到最低;
动态语言的优势
  1. 思维不受束缚,可以任意发挥,把更多的精力放在产品本身上;
  2. 集中思考业务逻辑实现,思考过程即实现过程;

3、Kotlin有什么优点值得我们去尝试它呢?

  • 首先,不说其他的,先说一下几点:
  • 简洁: 大大减少样板代码的数量。
  • 安全: 避免空指针异常等整个类的错误。
  • 100% 兼容 Java 代码,充分利用 JVM、Android 和浏览器的现有库。
  • 函数式编程,在Kotlin中,函数已经作为一级成员存在。
  • 各种语法糖(对于语法糖,我个人的看法是可以使用,但不要泛滥的用)
1、学习成本:
  • 如果你是一名java、C#程序员,过度到kotlin将是非常轻松和快速的。

  • 如果你是一名Android开发人员,那么Kotlin将非常适合你,通过目前一些团队的使用反馈,其代码量能节省三分之一、而且其提供了协程的特性,更适合与移动端这种频繁切换线程执行代码的需求场景。而且Google已经在I/O大会上宣布其为官方一级开发语言,我们不管其是否因为与java的版本冲突的关系,通过Google的支持,其发展速度将加快,而且Google与JetBrains还决定将成立一个独立的机构来负责Kotlin开发的相关工作。

  • 如果你是一名swift程序员,其学习kotlin的语法成本基本是0,Kotlin号称Java界的Swift,其语法与Swift非常相似。

  • 当然,如果你是一名新手,不管学习什么变成语言,估计就要多花点时间去学习了。(小编的观点,重要的不是语言,而是变成的思维,注意培养编程的思维,语言只是一个表达的工具,当然好的功能更能提高我们的生产效率)

  • 对于java后端开发人员来说,Spring5专门为支持 Kotlin 做了大量的工作,足以看出其对Kotlin的注重程度,而且对于IO频繁的后端操作来说,Kotlin提供的协程将非常适合。

2、与Java的兼容性
  • Java虽然目前热门程度有所下降,但其作为第一大语言的地位仍然没有动摇,特别是后端开发这一块,其生态非常的强大。

  • Kotlin 作为基于JVM的语言,其定位一开始就不是取代Java,其没有完全取代 Java 语言的野心,它用一种巧妙的方式让自己骑上了 Java 这只巨兽,利用 JVM 平台上丰富的类库迅速发展。

  • 一方面,它是一种新兴的现代编程语言;另一方面,它又与 Java 有完善的互操作性,完善到可以直接在 Kotlin 代码中随便插入 Java 语句(最后都是编译成字节码),同样可以在 Java 代码中调用 Kotlin 语言写成的函数和类库。

  • 凭借与 Java 语言完全兼容的特性,从Java迁移到Kotlin的成本相当低,你完全可以先用 Kotlin 语言写项目中的非核心代码,熟练掌握后再用 Kotlin 语言重写其他 Java 语言的部分,最终把整个项目迁移到 Kotlin 平台上来。

3、空指针异常的处理,提高安全性
  • Kotlin的空指针处理相比于java有着极大的提高,可以说是不用担心出现NullPointerException的错误,kotlin对于对象为null的情况有严格的界定,编码的阶段就需要用代码表明引用是否可以为null,为null的情况需要强制性的判断处理。虽然java9同样对空指针的操作提供了改进,但语法仍然不够简洁。

行动起来把,早点入坑就能早点倒在里面了~~