FAQ | 使用 Kotlin 进行 Android 开发

FAQ | 使用 Kotlin 进行 Android 开发

自从 2017 年我们宣布支持 Kotlin 以来,收到了很多关于使用 Kotlin 进行 Android 开发的问题: 大家想知道现在是否适合学习 Kotlin,是否要在应用开发中引入 Kotlin,学习 Kotlin 的最佳课程或教程是什么,Google 内部是否在使用 Kotlin,以及我们对 Java 编程语言的规划是怎样的?本文将一一作答。

问: 是否应该学习 Kotlin 进行 Android 开发?

最常提及的问题大都围绕同一个话题:

  • "对于初学者,应该选择学习 Kotlin 还是 Java 编程语言?"
  • "如果已经掌握了 Java 基础知识,现在适合改用 Kotlin 进行 Android 开发吗?"
  • "对于资深 Java 开发者如果学习 Android 开发,推荐直接上手 Kotlin 还是使用 Java 入门呢?"

简单来说:

是的!开始学习和使用 Kotlin 吧!

展开来回答:

Kotlin 与 Android

2017 年,我们在 Google I/O 大会上宣布支持 Kotlin。从那时起,我们开始着手确保我们的 API、文档和示例适用于 Kotlin。2019 年,Kotlin 成为 Android 开发的首选语言,这让我们开始更加依赖于 Kotlin 的功能。例如,协程成为我们实现异步操作的推荐方案。

我们还做了以下工作:

Kotlin 优先库

首先在若干 Android Jetpack API (如 Room、LiveData、ViewModel 和 WorkManager) 中,我们增加了对 Kotlin 协程的一流支持,从而转变了在 Android 上执行异步操作的方式。Firebase Android SDK 和许多 Jetpack 库都具有 Kotlin 扩展库 (KTX),通过 Kotlin 使用起来更加流畅。

现在,我们的很多库都优先使用 Kotlin,如 Paging 3.0 和 DataStore。Jetpack Compose 是全新的、独立的、声明式 UI 工具包,它从头到尾使用 Kotlin 编写。

工具

开发效率源自强大的工具。因此,我们对编译工具链做了很多针对 Kotlin 的改进,包括对 Kotlin JVM 编译器的改进、针对 Kotlin 的 R8 优化,甚至还开发了 Kotlin Symbol Processing 等新工具。我们添加了内置 Android Kotlin Live 模板,供您使用简写语法将常见的 Android 代码结构应用到 Kotlin 代码。同时,针对 Kotlin 的 Lint 检查可帮助您确保 Kotlin 代码更符合语言习惯。该工具在您从 Java 编程语言过渡到 Kotlin 时尤其有用。

问: Google 内部是否在使用 Kotlin?

在 Google 内部,我们也在着力推广使用 Kotlin。我们有超过 60 个应用 (如 Google Home、Drive、Maps 等) 已将 Kotlin 添加到代码库中。我们庞大的内部代码库中已有超过 200 万行 Kotlin 代码。

问: 是否应该将应用迁移到 Kotlin?

我们经常收到这一问题,但最终的答案因人而异。如果您对当前的代码库和技术栈感到满意,能熟练使用您的解决方案来管理异步任务,并且具有高效的错误捕获方法,那么迁移到 Kotlin 对您来说可能不是合适的解决方案。

如果您在试用 Kotlin 之后或通过下文提到的一些课程学习该语言之后,很喜欢它的效果,而且希望充分利用最新的 Jetpack API,那么您应该考虑将 Kotlin 加入到应用开发中。Kotlin 的一大优势在于它与 Java 有很好的互操作性。您可以循序渐进地采用 Kotlin,比如可以首先在测试中试用,然后在新功能中试用,在慢慢接触的过程中,再尝试转换部分旧代码。

着手迁移到至 Kotlin,请查阅 Codelab 教程 - 转换到 Kotlin

问: Java 编程语言在 Android 开发中将如何发展?

我们在 Java 的基础上增加了对 Kotlin 的支持,因为这两种语言都可以编译成相同的字节码,并且可以共存。我们喜欢 Kotlin 是因为用它编写代码更易于表达、更安全,同时我们也会继续 维护并推动对 Java 语言的支持。例如,在 Android 11 中,从 OpenJDK 的较新版本一直到版本 13,我们增加了对许多 API 的支持,Android Studio 甚至支持在所有 Android 设备上使用其中一些 API,而不受操作系统版本的限制。查阅文章,进一步了解 对 OpenJDK 中新 API 的支持情况

问: 学习 Kotlin 的最佳途径是什么?

采纳一门新语言并非易事,但我们正努力使其尽可能简单:

  • 首先从 培训课程 开始,这些课程面向所有开发者,涵盖初学者到专业开发者。既包含面向 没有编程经验 的初学者新开设的在线课程 使用 Kotlin 构建 Android 应用的基础知识,也有讲解如何 使用协程 的高级教程,帮助您提升使用 Kotlin 进行 Android 开发的技能。
  • 我们的所有文档页面都包含 Kotlin 代码段,方便您比较以两种语言运行 API 的效果,并且所有 示例 都有 Kotlin 版本。
  • 您可以查看 文章,观看 视频,从中学习各种 Kotlin 主题的内容。
  • 对于想要 改用 Kotlin开发者团队,请访问 官方文档 了解相关的指南。

自从 3 年前正式增加对 Kotlin 的支持以来,我们一直在加大力度对这一出色的语言和生态系统进行支持。我们携手 JetBrains 一起为 Kotlin 建立了坚实的基础,确保该语言健康发展,例如,通过谨慎的流程来审核重大变更。我们的贡献不止于此: Google 内部有一支专职研究 Kotlin 编译器的工程师团队;我们正在构建的 Jetpack API 不仅支持 Kotlin,而且以 Kotlin 为首选语言;我们还致力于为使用 Kotlin 进行 Android 开发提供无缝的体验。

Java 是 Oracle 公司和/或其子公司的注册商标。

版权声明

禁止一切形式的转载-禁止商用-禁止衍生 申请授权

脉脉不得语
脉脉不得语
Zhengzhou Website
Android Developer | https://androiddevtools.cn and https://androidweekly.io WebMaster | GDG Zhengzhou Funder & Ex Organizer | http://Toast.show(∞) Podcast Host

你已经成功订阅到 Android 开发技术周报
太棒了!接下来,完成检验以获得全部访问权限 Android 开发技术周报
欢迎回来!你已经成功登录了。
Unable to sign you in. Please try again.
成功!您的帐户已完全激活,您现在可以访问所有内容。
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.