Kotlin vs Java 在现代代码库中的 Android 应用开发

发布: (2025年12月19日 GMT+8 16:40)
10 min read
原文: Dev.to

Source: Dev.to

开始一切的时刻

让我记起的那一刻发生在一次比预期更久的代码审查中。房间里除了笔记本电脑的嗡嗡声几乎寂静无声,终于有人半开玩笑地说:

“这个文件感觉比整个应用还老。”

我们都明白他们的意思。代码还能运行,但它背负的沉重感已经不再符合产品如今的体验。

就在那时,问题再次浮现——不是作为争论,而是作为一种反思:当我们决定如何编写应用时,真正选择的是什么语言?

当 Java 看起来是唯一的选择时

我在 Android 开发仍显得僵硬却让人安心的时期开始使用 Java。规则清晰,模式熟悉。能够准确知道事物的行为方式让人感到舒适,即使达到目标需要付出努力。

  • Java 强迫我必须明确。每一个意图都必须写清楚。
  • 起初,这让人觉得安全。
  • 随着时间推移,尤其是应用规模扩大、期望变化时,这种明确感开始显得沉重。

那时我并未质疑它。这只是 Android 应用的构建方式。

Kotlin 进入对话的那一天

Kotlin 对我来说并没有伴随喧闹而来。它悄悄出现在副项目中,随后慢慢进入生产讨论。有人会提到更简洁的语法。还有人会提到因空指针处理而导致的崩溃更少。

吸引我注意的不是速度或风格,而是代码在我离开几周后再次阅读时的感觉。我能更快地理解它。我还能记起做出决定的原因。

这种感觉比我预期的更重要。

阅读代码才是日常工作

我大部分时间并不是在写新代码,而是阅读已经存在的代码——跟随可能已经离开团队的人的逻辑,重新审视我几乎记不清的决定。

  • Java 代码 常常像合同一样:清晰、结构化,有时让人感到疲惫。
  • Kotlin 代码 更像一次对话——仍然精准,但语气更轻松。

在现代代码库中,这种差异会影响团队在一天结束时的疲劳感。

Safety Feels Different in Practice

  • Java 教会了我纪律。安全来自仪式感;你通过结构来证明正确性。
  • Kotlin 教会了我意识。安全来源于意图;你更直接地表达什么应该存在、什么不应该存在。

这种转变减轻了心理负担:防御性检查更少,对某些东西是否可能为 null(而实际上不应该)的疑惑也更少。

迁移从不只是技术层面

我从未见过仅凭语言特性驱动的顺畅迁移。迁移往往发生在团队感受到无法再忽视的摩擦时。

  • 以 Java 为主的代码库会以特定方式老化:样板代码成倍增加,小改动需要触及许多位置,审查变慢,因为上下文散布在各处。
  • 当团队转向 Kotlin 时,他们往往是想恢复工作流,而不是追求新奇。

混合代码库讲述真实故事

大多数真实的应用不会一夜之间切换。它们会变成双语——Java 和 Kotlin 并肩存在,各自展示出它们的编写时间。

这些混合代码库如实讲述了成长的历程:早期的基础使用 Java,后来的层次采用 Kotlin。随着时间推移,重心会自然转移。

我已经学会不急于推进这一过程。语言的转换更多反映团队的舒适度,而非技术准备度。

现代 Android 期望改变了平衡

Android 应用今天的行为与多年前不同:状态更多,后台工作更多,与系统行为的集成也更多。

Kotlin 更适合许多团队的这种现实——并不是因为 Java 处理不了,而是因为 Kotlin 减少了围绕这些关注点的噪音。更少的代码用于防止错误,让人有更多空间思考行为。

当冗余成为商业成本

在大规模时,冗余会消耗时间——不仅是编写时间,还包括阅读、审查和维护的时间。

我看到团队因为代码需要持续关注而难以快速推进。并不是因为代码错误,而是因为它太“吵”。

Kotlin 能让一切变得更安静。当截止日期紧迫、团队规模扩大时,这种安静尤为重要。

为什么 Java 仍然有其位置

尽管如此,Java 对我来说并没有消失。代码库的某些部分可以多年保持稳定,而 Java 的显式特性正适合这种稳定性。

  • 了解事物的工作方式而不依赖新构造会让人感到安心。
  • 对于长期存在的组件,这种可预测性仍然有价值。

在有意使用时,现代代码库通常能从两种语言中受益。

Teams Feel Language Choices Emotionally

I’ve noticed how language choices affect conversations.

  • Kotlin code reviews feel lighter; discussions focus on behavior rather than structure.
  • Java reviews tend to focus on correctness and completeness. That’s not a flaw—it’s a different energy.

Teams thrive when their tools match how they think and work today, not how they worked years ago.

团队对语言选择的情感感受

我注意到语言选择会影响对话。

  • Kotlin 代码审查 感觉更轻松;讨论更关注行为而非结构。
  • Java 审查 往往侧重于正确性和完整性。这不是缺陷——只是一种不同的能量。

当团队的工具与他们今天的思考和工作方式相匹配,而不是过去几年的方式时,团队会更有活力。

将这些选择应用于真实项目

在不同项目中工作——包括那些由移动应用开发团队主导、时间线和期望紧迫的项目——我看到语言选择会产生连锁反应。

  • 新开发者的入职感受不同。
  • Bug 修复的感受不同。
  • 重构时的信心不同。

这些结果很少体现在性能指标中,而是体现在团队对工作讨论的方式上。

这个问题很少是关于更好还是更差

当人们问“Kotlin 与 Java”时,他们通常想要一个结论。我已经不再给出结论了。

更好的问题是 哪种语言能够支持应用当前的生命周期阶段——早期增长、快速变化、长期稳定。

现代代码库不是静态的。它们在不断演进。语言的选择也应该随之演进。

Ending With the Code Review That Started It All

那次代码审查在没有决定的情况下结束。没有强制指令。没有路线图。只有一种共识:需要进行改变。

几个月后,新的文件以 Kotlin 编写,未作任何公告。旧的 Java 文件仍然保留在原处,默默支撑着把团队带到今天的基础。

它们如此。代码库悄然调整。

这就是大多数有意义的转变发生的方式。不是通过声明,而是通过一次又一次的小而稳健的选择,让日常工作变得更轻松。

Back to Blog

相关文章

阅读更多 »

个人资料

当前状态 🟢 开放实习和入门级机会 使命:在 52 周内构建 30 款 App,成为世界级 Android Engineer。 我充满热情……