Android Jetpack 是不是需要使用 Kotlin 语言?

Posted

技术标签:

【中文标题】Android Jetpack 是不是需要使用 Kotlin 语言?【英文标题】:Does Android Jetpack require the use of the Kotlin language?Android Jetpack 是否需要使用 Kotlin 语言? 【发布时间】:2019-01-22 00:02:51 【问题描述】:

我似乎无法在 Google 中找到明确的答案,而且我看到的所有 Jetpack 文档和示例似乎都参考并使用了 Kotlin。

但是您是否必须使用 Kotlin 才能使用 Jetpack?或者 Jetpack 可以与传统的 Java 程序一起使用吗?

我正在查看 Kotlin,但它使您的应用程序大小几乎增加了 1 MB。鉴于我的整个应用程序目前只有大约 200KB,我认为 Kotlin 不值得将我的应用程序的大小增加 500%!

【问题讨论】:

不,你不需要 kotlin - 你可以使用 java 和 jetpack Java 和 Kotlin 可以互操作。 @ArchieG.Quiñones 你是说 Kotlin 是一种 Java 吗? @JasonStack Kotlin 不是一种 Java。它们可以互操作的主要原因是它们都可以编译成字节码。 【参考方案1】:

Jetpack 是一系列库以及有关 Google 建议如何构建 android 应用程序的指南。这些库都具有 Java API,因此您无需迁移到 Kotlin 即可使用其中的任何一个。 Android 开发仍完全支持这两种语言。

至于 APK 大小的考虑,Kotlin 确实会增加它。很难说它会有多大,但 Proguard 应该去掉很多你最终不使用的标准库,所以它可能比整个 MB 小得多。 Here's 一篇文章比较了一个基本上为空的 Hello world 应用程序的 Java 和 Kotlin APK 大小,例如发现仅增加了 11 KB。因此,除非您所在的市场对此非常重要,否则您可能会选择使用 Kotlin。

更重要的是,切换到 Kotlin 不仅仅是引入一个库 - 它是一种需要学习的新语言,这意味着您必须付出一些努力,并且它可以极大地改变您编写应用程序的方式。你应该更多地研究这种语言,看看你是否喜欢它提供的东西。

【讨论】:

【参考方案2】:

当您使用 kotlin 而不是 java 时,您只会获得更多的语法糖,但它们具有相同的功能,您甚至可以使用它们 hybird。

android Jetpack 也很棒,它不应该受到语言的限制。虽然android-sunflower - Android Jetpack 的官方演示应用是用 Kotlin 编写的,但它仍然可以通过 java 实现。为了支持Android Jetpack,我将所有的kotlin实现都翻译成Java,并添加了[app-java]模块作为android-sunflower app的Java版本,请查看android-sunflower-java

【讨论】:

【参考方案3】:

引用Android documentation

Jetpack 是一组 Android 软件组件,可让您更轻松地开发出色的 Android 应用。这些组件可帮助您遵循最佳实践,让您无需编写样板代码并简化复杂任务,因此您可以专注于您关心的代码。

Jetpack 包含 androidx.* 包库,与平台 API 不捆绑。这意味着它提供了向后兼容性并且比 Android 平台更频繁地更新,确保您始终可以访问 Jetpack 组件的最新和最佳版本。

在文档中没有任何地方说 Jetpack 开发需要使用 Kotlin。此外,如果您打开 Android Studio 3.2(当前为 beta 5),在 New Project 对话框中,您将看到添加 Kotlin 支持的选项,就像之前版本的 Android Studio 一样,因此您可以在没有 Java 的情况下使用 Java选中此框。

【讨论】:

但是在 Jetpack 主页上,它说“组件可以单独采用,但可以协同工作,同时利用 Kotlin 语言特性,让您更有效率。”,暗示它确实依赖于科特林。很高兴知道它没有。 Kotlin 用户通过 Kotlin 语言特性获得了一些额外的 API,但没有额外的功能 - 他们只是在调用相同的实现时获得了稍微不同的语法。

以上是关于Android Jetpack 是不是需要使用 Kotlin 语言?的主要内容,如果未能解决你的问题,请参考以下文章

Android Jetpack之ViewModel源码分析

AgoraIO 是不是支持使用 Android Jetpack Compose 构建 Live Stream 应用程序

Android Jetpack Startup库分析

Android Jetpack Startup库分析

Android Jetpack Startup库分析

Android Jetpack套件解析——Startup库分析