Kotlin 语言简介
在动手装环境之前,我们先认识一下 Kotlin 到底是什么、为什么值得学、能用它做什么。理解了背景,学习的时候会更有的放矢。
Kotlin 是什么?
Kotlin 是由捷克软件公司 JetBrains(就是做 IntelliJ IDEA、PyCharm、WebStorm 的那家)在 2011 年启动研发、2016 年发布 1.0 稳定版的一门现代静态类型语言。它跑在 JVM(Java 虚拟机)上,可以和 Java 无缝互调,后来又支持编译成 JavaScript(Kotlin/JS)和原生机器码(Kotlin/Native)。
它的核心目标是:解决 Java 的痛点(冗长样板代码、危险的空指针、缺失的现代语言特性),同时与 Java 100% 互操作——Kotlin 代码可以调用 Java 库,Java 代码也能调用 Kotlin,这让它能在庞大的 Java 生态里无缝落地。
诞生背景:JetBrains 的"不满意"
Kotlin 的诞生源于 JetBrains 内部对自己主力工具(IDEA)的开发体验不满。他们用 Java 写 IDEA,但 Java 写起来啰嗦、空指针频发、缺少 lambda、缺少扩展函数、缺少数据类。他们试过 Scala,但 Scala 编译慢、IDE 支持差、与 Java 互操作不顺畅。
于是 2011 年由 Dmitry Jemerov 牵头立项,目标是造一门"像 Java 一样能落地、像 Scala 一样现代、像 Python 一样简洁"的语言。命名来自俄罗斯圣彼得堡附近的 Kotlin 岛(和 Java 命名自 Java 咖啡异曲同工)。
- 2011.7:JetBrains 官方公开 Kotlin 项目。
- 2016.2:发布 1.0 稳定版,正式生产可用。
- 2017.5:Google 宣布 Kotlin 成为 Android 官方开发语言。
- 2019.5:Google 把 Kotlin 列为 Android 首选语言,新文档示例优先用 Kotlin。
- 2023:Kotlin 2.0 引入 K2 编译器,性能大幅提升。
Kotlin 的核心特点
- 静态类型 + 编译型:编译期检查类型错误,性能与 Java 同级,远超 Python。
- 与 Java 100% 互操作:同一个项目里 Kotlin 和 Java 文件可以互相调用,旧 Java 项目可逐步迁移。
- 简洁优雅:同一份逻辑,Kotlin 代码通常比 Java 短 40%。数据类一行抵 Java 几十行 POJO。
- 空安全:类型系统区分可空(
String?)与非空(String),从源头消灭 NullPointerException。 - 扩展函数:给已有类(包括 String、Int、第三方类)"添加"方法,不改源码、不继承。
- 协程(Coroutine):轻量级异步方案,用同步的写法做异步的事,告别回调地狱。
- 智能转换(Smart Cast):判断类型后,编译器自动窄化,无需手动强转。
- 跨平台:一份 Kotlin 代码,跑在 JVM、JS、原生(iOS/嵌入式)上。
- 工具支持顶级:JetBrains 自家做的语言,IntelliJ IDEA 的支持极其智能(Java 转 Kotlin、空安全提示、协程调试)。
第一个 Kotlin 程序
说了这么多,先看一眼代码。Kotlin 的"Hello World"长这样:
fun main() {
println("Hello, World!")
println("你好,Kotlin!")
}
// 输出:
// Hello, World!
// 你好,Kotlin!运行它的几种方式:
# 方式一:IntelliJ IDEA 里右键 -> Run '文件名Kt'(推荐)
# 方式二:命令行用 kotlinc 编译
kotlinc hello.kt -include-runtime -jar hello.jar
java -jar hello.jar
# 输出: Hello, World!
# 方式三:用在线工具,无需安装
# https://play.kotlinlang.org/和 Java 的 Hello World 相比,Kotlin 省略了 public class、public static void main(String[] args) 这一长串修饰符——fun main() 就够了。println 是 System.out.println 的简写包装。整个函数直接写在文件顶层,不需要包在 class 里(底层会自动生成一个 class,但你不用管)。
Kotlin 都用在哪?典型应用场景
- Android App 开发:Google 首选语言,Jetpack Compose 声明式 UI 完全基于 Kotlin。市面上 70%+ 的新 Android 应用用 Kotlin 写。
- 服务端开发:Spring Boot 官方支持 Kotlin,Ktor 是 JetBrains 出品的轻量 Kotlin Web 框架。
- 跨平台移动开发:Kotlin Multiplatform Mobile(KMM),iOS 和 Android 共享业务逻辑,UI 各自原生。
- 前端:Kotlin/JS 把 Kotlin 编译成 JavaScript,可以用 React、Vue 写前端。
- Gradle 脚本:Gradle 5.0+ 原生支持 Kotlin DSL(
build.gradle.kts),比 Groovy 有更好的 IDE 补全。 - 数据科学与脚本:虽然不如 Python 主流,但 Kotlin Notebook 和 Kotlin Scripting 也在快速发展。
使用 Kotlin 的大厂包括:Google、Square、Netflix、Pinterest、Trello、Atlassian、Uber、Slack 等等。生态已经非常成熟。
Kotlin vs 其他语言
- vs Java:Kotlin 语法更简洁(数据类、lambda、扩展函数),空安全是杀手锏;但 Kotlin 编译比 Java 稍慢,生态比 Java 略小。两者可共存。
- vs Scala:Scala 学术气息重、学习曲线陡;Kotlin 更实用主义,上手快得多。生态互补。
- vs Swift:Swift 是 Apple 平台的 Kotlin——两者设计哲学几乎一致(val/var、可选类型、扩展、协议)。学会一个,另一个几乎免费。
- vs Dart/Flutter:Dart 用于 Flutter 跨平台 UI,生态专注移动 + 桌面;Kotlin 跨平台主要共享业务逻辑,UI 用各平台原生。
- vs Python:Python 是动态类型、解释执行,适合脚本和数据科学;Kotlin 是静态类型、编译执行,适合大型工程和 Android。
Kotlin 的"实用主义"哲学
研究 Kotlin 的设计文档你会发现一个反复出现的词:pragmatic(实用主义)。它不追求理论上的纯粹(不像 Scala 那样学术),也不为了简洁牺牲可读性(不像 APL、J)。它就是想做一个让你写得爽、出错少、能落地的语言。这种哲学体现在:
- 不强制一种范式。你可以写过程式、面向对象、函数式,甚至混合。
- 不为简洁加新符号。Kotlin 用
val/var而非 Haskell 的let,用fun而非 JS 的function(更短),保留分号可选(;写了不报错)。 - 不为现代特性放弃生态。Kotlin 跑在 JVM 上,白嫖 Java 几十年的库和工具。
- 渐进式演化。新版本不会大改语法(避免 Python 2→3 那种惨剧)。
该不该学 Kotlin?
如果你的方向是Android 开发、服务端开发、跨平台移动开发,Kotlin 几乎是必修课。学完本系列,你将能独立用 Kotlin 写一个完整的 Android App、读懂开源 Kotlin 项目、用 Ktor/Spring Boot 写服务端接口。
另外,Kotlin 设计得非常优雅,学习它本身就是一种享受——很多概念(空安全、扩展函数、when、密封类、协程)会让你成为更好的程序员,迁移到其他语言也受益。
本教程的目标读者
- 完全零基础:本教程假设你不懂任何编程,从变量、函数开始讲,有大量例子。但你需要会基本的电脑操作(命令行、文件编辑)。
- 有 Java 经验:可以快速过一遍,重点看 空安全、data class、扩展函数、协程 这些 Java 没有的特性。
- 有 Python/JS 经验:Kotlin 是静态类型语言,你需要适应"变量有类型"这件事。但语法简洁,不会太陡。
- 想做 Android:Kotlin 是 Android 首选语言。本系列是 Kotlin 语言基础,Android 专题(Jetpack Compose、Activity、ViewModel)需要另外学。
配套学习资源
- 官方教程:https://kotlinlang.org/docs/home.html — 极佳的入门文档,有 Koans 交互练习。
- Playground:https://play.kotlinlang.org — 在线运行 Kotlin,无需安装。
- 书籍:《Kotlin in Action》(Dmitry Jemerov 等著,JetBrains 自己人写的,权威)、《Programming Kotlin》(Stephen Saici)。
- 视频:Google 的 Android Kotlin Fundamentals 免费 YouTube 系列。
- 开源项目:JetBrains/kotlin(GitHub)看标准库实现。
← 返回 Kotlin 教程目录
下一篇 Kotlin 环境搭建 →