
Kotlin的开始 Kotlin
Kotlin是什么?
Kotlin是一种具有类型推断的跨平台、静态类型、通用型编程语言。Kotlin能够与Java完全互操作,并且Kotlin标准库的JVM版本依赖于Java 类库,但类型推断允许其语法更简洁。Kotlin主要针对 JVM,但也编译为JavaScript(例如,对于使用React的前端 Web 应用程序)或通过LLVM的本机代码(例如,对于与Android应用程序共享业务逻辑的本机iOS应用程序)。
2019 年 5 月 7 日,Google 宣布Kotlin编程语言现在是其Android应用程序开发人员的首选语言。自 2017 年 10 月发布Android Studio 3.0 以来,Kotlin已被纳入标准 Java 编译器的替代方案。Android Kotlin 编译器默认生成 Java 8 字节码(在任何更高版本的 JVM 中运行),允许程序员选择针对 Java 9 最多 18 进行优化,或允许更多功能;在 Java 16 中引入对 JVM 的双向记录类互操作性支持,自 Kotlin 1.5 起被认为是稳定的。
Kotlin 支持网络;通过编译为 JavaScript(即,带有经典后端的 Kotlin/JS,自 1.3 版起被声明为稳定版),而较新的 Kotlin/JS(基于IR)在 1.5.30 版中处于测试阶段。Kotlin/Native(例如Apple 芯片支持)从 1.3 版开始被视为测试版。
我本人为什么学习Kotlin语言
本人是一名Android开发工程师,因为Android开发的首要语言就是Kotlin,为了个人的成长,学习Kotlin是必要的。但是也不仅仅是因为这个。Kotlin的各种优点让我深受吸引,让我不仅仅是单纯的学习,而是学习Kotlin语言的魅力之处,让我觉得Kotlin真正的结合了百家之长,有dart的空安全检查,有go语言的协程,不仅仅可以用来开发Android程序,还可以编译IOS的业务层,也不仅仅是前端的Android,还可以用于编写Springboot程序,一样可以集成SpiringCloud全家桶。因为我不仅仅是Android开发,也同样对各种新的技术抱有饱满的兴趣,Kotlin在未来很可能也会成为机器学习,深度学习的首要语言。而这更是我为了跟随计算机时代不断前进的步伐,而选择的计算机语言。
关于语言层面的优点:
1.Concise 简单明了的
这一点有一个问题,代码上看起来非常的简短,几行就可以完成Java几十行的,但是有一部分人会觉得一个问题,就是代码简短了,阅读性就差了,虽然Java写起来冗杂,但是Java的各种关键字,各种语句,可以很明确的标示一条语句的具体含义,而Koltin,一条语句,可能有多种可以理解的方向,比如类型推断的特性,在需要返回值的时候,因为类型的不确定性,语言的不熟练,就会经常的用到强制类型转换,导致程序的各种各样的异常问题。终究也就只有一点,熟练度,只有你真正的熟悉了这一门语言,阅读性的问题也就没有那么重要了,都是一眼就能明白是什么意思。所以,熟练后,最终代码的简洁的优势就会逐渐凸显出来。
2.Safe 安全
这里指的也就是Kotlin带有得空安全检查,所谓的空安全检查,就是利用编译器的特性,在代码编写的阶段,在编译前就避免Java中出现的大量的空指针异常的问题,而所谓的空指针异常,也就是某一个参数,在运行的过程中,因为某种原因,导致并没有赋值或者被赋予了null值,在Java中null是一个特殊的值,如果本身接收null值的数据类型带有方法,而null作为一个特殊的值,是没有这个方法的,可是代码却要让他执行这个方法,那会显然,程序到这里就会崩溃,执行不下去了。而Kotlin,添加了空安全特性,在编译之前就进行了空安全检查,一个参数就有了可空和不可空的状态,利用?特殊符号来完成这一声明,这将在后面会详细介绍。当一个参数没有被初始化(第一次赋值)的时候,这个值在后面的使用过程中,就可能是空值。所以,编译器很容易的利用这个规则检查到了,而你,只需要在类型的声明出添加一个问号,就可以解决问题。但是,在你每一个使用这个可空类型的参数时,编译器都会提醒你,他可能为空,推荐你使用空安全检查,来完善对空值的处理,避免空指针异常。
3.Expressive 具有变现力
Kotlin是一个拥有大量的特殊函数式的语言,而这些函数式,也为Kotlin提供了强大的变现力。首先就是解构特性。支持将list和map直接结构成多个变量,并且直接在声明处的作用域之内使用。对数据的解析大大的简短了操作。其实就是let,run,with,apply,also,将调用本身,以及返回值进行了各种组合,实现我进我出,我进他出的效果。以及takeif,针对空值处理的一个函数式。
4.Interoperable 具有互操作性
kotlin可以与各种语言进行交互,就是它的可操作性,可以使用任何现有JVM库或框架。从Java中调用Kotlin代码,都没有任何问题。编写Kotlin代码,将其编译为JavaScript,并在浏览器中运行,以及使用现有的JavaScript API和库,使用Kotlin包装器构建具有JavaScript框架(如React)的应用程序。
5.Multiplatform 跨平台
也就是利用可操作性直接体现出了其强大的跨平台能力,JetBrains公司推出了开发工具的全家桶,而他们退出的语言也将拥有这样的特性,可以做任何事的全家桶语言。
结语
最后,语言虽然是最基础的内容,但是语言强大的特性,可以从语言的设计思维中得到不少的程序开发中的业务设计思维。接下来的时间,我会自己不定期的编写关于Kotlin语言的博客,我会尽可能的详细讲解,真正的做到让零基础的人来接触开发的大门。所以我的语言往往是很冗长啰嗦的,为的就是利用这种节奏,来给读者更多的思考,反思我讲诉的,思考自己所能理解的。不过我也明白自己也有着知识的诅咒,可能会因为自己已经掌握了某个知识点而忽略了。