为什么学习 Kotlin

Kotlin 是 JetBrains 设计的一门现代静态类型语言。它可以运行在 JVM 上,也可以编译到 JavaScript、Native 和多平台目标。对大多数后端、Android 和已有 Java 项目的开发者来说,最重要的是:Kotlin 能与 Java 高度互操作,同时用更强的类型系统和更简洁的语法减少样板代码。

Kotlin 解决了什么问题

Java 很稳定、生态强大,但一些常见问题长期存在:

  • 空指针异常通常要靠代码审查、注解或测试兜底。
  • 简单数据模型需要写构造器、getter、equals()hashCode()toString()
  • 集合处理常常需要样板循环,或者依赖 Stream API。
  • 表达式能力较弱,例如 ifswitch 在传统 Java 中主要是语句。
  • 默认可继承的类和方法容易扩大继承面。

Kotlin 并不是抛弃 Java 生态,而是试图把这些问题前移到语言层面处理:

  • 类型系统区分可空与非空。
  • data class 自动生成常见数据方法。
  • 扩展函数、Lambda、高阶函数让 API 更容易组合。
  • ifwhentry 等结构可以作为表达式使用。
  • 类默认 final,继承必须显式声明。

与 Java 的关系

Kotlin/JVM 编译后的代码运行在 JVM 上,可以调用 Java 类库,也可以被 Java 调用。这意味着你不需要一次性重写已有系统。常见迁移方式是:

  1. 在 Java 项目中新增 Kotlin 模块或 Kotlin 文件。
  2. 从工具类、DTO、测试代码、边界层开始迁移。
  3. 逐步引入空安全、数据类、扩展函数和协程。
  4. 保留成熟的 Java 框架,例如 Spring、JUnit、Jackson、Hibernate。

Kotlin 的学习重点

如果你来自 Java,学习 Kotlin 不要只看语法糖。真正重要的是下面几类变化:

主题 Kotlin 变化 Java 开发者要注意
空安全 StringString? 是不同类型 不要把 !! 当成“快速修复”
变量 val 只表示引用不可重新赋值 val list = mutableListOf() 仍然可以修改列表内容
函数 函数是一等概念,可以顶层声明 不必为所有工具函数创建 Util
主构造函数写在类头部 属性声明经常同时定义构造参数和 getter
继承 类和方法默认不可继承 框架代理、Mock、ORM 场景可能需要额外配置
集合 区分只读接口和可变接口 List<T> 不等于真正不可变集合
表达式 ifwhen 可返回值 可以减少临时变量和重复赋值

推荐学习路径

  1. 掌握基础语法、变量、函数、字符串模板。
  2. 理解类型系统和空安全。
  3. 学习控制流、集合和 Lambda。
  4. 学习类、对象、数据类、密封类。
  5. 学习 Java 互操作,包括平台类型和注解。
  6. 根据实际场景学习协程、Kotlin/JVM、Kotlin Multiplatform 或 Android。

参考

  • Kotlin 官方文档:https://kotlinlang.org/docs/home.html
  • Kotlin Tour:https://kotlinlang.org/docs/kotlin-tour-welcome.html