第01课:开篇综述

第01课:开篇综述

Java 诞生到现在已经有20多年了,Java 仍然是非常热门的编程语言之一,很多平台中使用 Java 开发。但由于历史的原因 Java 语法有些繁琐、冗余,而本书要介绍的 Kotlin 语言设计目标是取代 Java 语言,简化应用开发。

Kotlin 语言简介

Kotlin 语言是基于 Java 虚拟机(Java Virtual Machine,简称 JVM)的现代计算机语言。作为一种 Java 虚拟机语言 Kotlin 编写的程序可以运行在任何Java能够运行的地方。

Kotlin 语言历史

Kotlin 语言是 JetBrains 公司[1]开发的,该公司是著名的计算机语言开发工具提供商,最著名的当属 Java 集成开发工具 IntelliJ IDEA。作为开发工具提供商 JetBrains 对于 Java 语言有着深入的理解,有着迫切地化繁为简的需求。JetBrains 从2010年开始构思,2011年推出 Kotlin 项目;2012年将 Kotlin 项目开源;2016年发布一个稳定版1.0;2017谷歌 I/O 全球开发者大会上,谷歌宣布 Kotlin 语言成为 Android 应用开发一级语言。

至于这种新的语言为什么命名为 Kotlin?这是因为新语言是由 JetBrains 的俄罗斯圣彼得堡罗斯团队设计和开发的,他们想用一个岛来命名新语言,或许有因为 Java 命名源自于爪哇(Java)岛,这里盛产 Java 咖啡。他们找到了位于圣彼得堡以西约30公里处芬兰湾中的一个科特林岛,科特林的英文是 Kotlin,因此将新语言命名为 Kotlin。

Kotlin 语言设计目标

Kotlin 首先被设计为用来取代 Java 语言。目前主要的应用场景:

  • 服务器端编程,基于 JavaEE 的 Web 服务器端开发和数据库编程等。
  • Android 应用开发,替代 Java 语言编写 Android 应用程序。

Kotlin 这两种场景的应用都需要 Java 虚拟机(Java Virtual Machine,JVM)也是本书重点介绍的。此外,Kotlin 还有其他目前处于原型阶段的应用场景:

  • 编译成 JavaScript 代码。Kotlin 代码还可以编译成 JavaScript 代码,这样就可以应用于 Web 前端开发。
  • 编译成本地(Native)代码。Kotlin 代码还可以编译成本地(Native)代码,本地代码运行不再需要 Java 虚拟机,类似于 C 语言。

Kotlin 语言特点

Kotlin 具体现代计算机语言特点,如类型推导、函数式编程等。下面详细解释一下。

简洁

简洁是 Kotlin 最主要的特点,实现同样的功能 Kotlin 代码量会 Java 代码量缩减很多。Kotlin 中数据类、类型推导、Lambda 表达式和函数式编程都可以大大减少代码行数,使得代码更加简洁。

安全

Kotlin 可以有效地防止程序员疏忽所导致的类型错误。Kotlin 与 Java 一样都是静态类型语言[2],编译器会在编译期间检查数据类型,这样程序员会在编码期间发现自己的错误,避免错误在运行运行期发生而导致系统崩溃。另外,Kotlin 与 Swift[3] 类似支持非空和可空类型,默认情况下 Kotlin 与 Swift 的数据类型声明的变量都是不能接收空值(null)的,这样的设计可以防止试图调用空对象而引发的空指针异常(NullPointerException),空指针异常也会导致系统崩溃。

类型推导

Kotlin 与 Swift 类似都支持类型推导,Kotlin 编译器可以根据变量所在上下文环境推导出它的数据类型,这样在变量时可以省略明确指定数据类型。

支持函数式编程

作为现代计算机语言 Kotlin 支持函数式编程,函数式编程优点:代码变得简洁、增强线程安全和便于测试。

支持面向对象

虽然 Kotlin 支持函数式编程,但也不排除面向对象。面向对象与函数式编程并不是水火不容,函数式编程是对面向对象重要补充,而且面向对象仍然是编程语言的主流,面向对象便于系统分析与设计。

Java 具有良好的互操作性

Kotlin 与 Java 具有100%互操作性,Kotlin 不需要任何转换或包装就可以调用 Java 对象,反之亦然。Kotlin 完全可以使用现有的 Java 框架或库。

免费开源

Kotlin 源代码是开源免费的,它采用 Apache 2 许可证,源代码下载地址 详见这里

Kotlin 与 Java 虚拟机

Kotlin 是依赖于 Java 虚拟机运行的语言,因此初学者有必要熟悉一下 Java 虚拟机作用。

Java 虚拟机

Java 应用程序能够跨平台运行,主要是通过 Java 虚拟机实现的。如图1-1所示,不同软硬件平台 Java 虚拟机是不同的,Java 虚拟机往下是不同的操作系统和 CPU,使用或开发时需要下载不同的 JRE 或 JDK 版本。Java 虚拟机往上是 Java 应用程序,Java 虚拟机屏蔽了不同软硬件平台,Java应用程序不需要修改,不需要重新编译直接可以在其他平台上运行。

图1-1 Java 虚拟机

Kotlin 应用程序运行过程

要了解 Kotlin 应用程序运行过程,则需要先了解 Java 应用的运行过程。

Java 程序运行过程如图1-2所示,首先由 Java 编译器将 Java 源文件(*.java文件)编译成为字节码文件(*.class文件),这个过程可以通过 JDK(Java 开发工具包)提供的 javac 命令进行编译。当运行 Java 字节码文件时,由 Java 虚拟机中的解释器将字节码解释成为机器码去执行,这个过程可以通过 JRE(Java 运行环境)提供的 Java 命令解释运行。

enter image description here

图1-2 Java 程序运行过程

基于 Java 虚拟机的 Kotlin 应用程序运行过程类似于 Java 程序运行过程,其过程如图1-3所示,首先由 Kotlin 编译器将 Kotlin 源文件(*.kt 文件)编译成为字节码文件(* Kt.class 文件),注意这个过程中文件名会发生变化,会增加 Kt 后缀,例如,Hello.kt 源文件编译后为 HelloKt.class 文件。编译过程可以通过 Kotlin 编译器提供的 kotlinc 命令进行编译。当运行 Kotlin 字节码文件时,由 Java 解释器将字节码解释成为机器码去执行,这个过程也是通过 java 命令解释,但需要 Kotlin 运行时库支持才能正常运行。

enter image description here

图1-3 Kotlin 基于 Java 虚拟机的应用程序运行过程

如何获得帮助

对于一个初学者必须要熟悉如下几个 Kotlin 相关网址:

下面重点说明 Kotlin 标准库,其他的网址不再赘述。Kotlin 标准库是由 Kotlin 官方开发的,Kotlin 语言是基于 Java 的,能够与 Java 完全地互操作,所以 Kotlin 可以调用 Java 对象,反之亦然。所以,Kotlin 语言尽可能利用 Java 自带库,然后在这些库上进行一些扩展(Extension)和必要的封装,这就是 Kotlin 标准库所包含的内容。

提示:扩展(Extension)是 Kotlin、C#、Swift 和 Objective-C 等语言特有的新功能,类似于继承机制,它可以在一个已有的类上扩展函数或属性,从而为该类添加新功能。有关扩展后面第10章会详细介绍。

作为 Kotlin 程序员应该熟悉如何使用 Kotlin 标准库的 API 文档。打开 Kotlin 标准库网址,页面如图1-4所示。

enter image description here

图1-4 Kotlin 标准库的 API 文档

下面介绍一下如何使用 API 文档,熟悉一下 API 文档页面中的各个部分含义,如图1-5所示是 Array 类 API 文档,从图中可见类中包含:构造函数、函数和扩展函数,此外,还包含属性和从父类继承下来的函数和属性等内容。接口与类 API 的类似这里不再赘述。

图1-5 API 文档页面各个部分


[1] JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄罗斯的圣彼得堡及美国的波士顿设有开发团队。

[2] 静态类型语言会在编译期检查变量或表达式数据类型,如 Java 和 C++ 等。与静态类型语言相对应的是动态类型语言,动态类型语言会在运行期检查变量或表达式数据类型,如 Python 和 PHP 等。

[3] Swift 语言是苹果公司推出的编程语言,目前主要应用于苹果的 macOS、iOS、tvOS 和 watchOS 4 等应用开发。

上一篇
下一篇
目录