【问题标题】: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。它们可以互操作的主要原因是它们都可以编译成字节码。

标签: android kotlin android-architecture-components android-jetpack


【解决方案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,但没有额外的功能 - 他们只是在调用相同的实现时获得了稍微不同的语法。
      猜你喜欢
      • 2021-08-23
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      相关资源
      最近更新 更多