阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

开发Android应用用Kotlin还是Java?

87次阅读
没有评论

共计 3037 个字符,预计需要花费 8 分钟才能阅读完成。

导读还记得多年前有关 Android 与 iOS 孰优孰劣的辩论吗? 如今,Kotlin 与 Java 的争论,时常广泛地发生在开发人员之中。不过,由于大家往往关注的是 Java 所不具备的 Kotlin 功能,因此他们的结论可能略显偏颇。下面,我将从资深应用开发人员的角度,综合比较 Kotlin 与 Java 在不同领域的优缺点,以方便您做出判断和选择。

首先,我们来简单了解一下这两种语言。

Kotlin:简介

由 JetBrain 推出的 Kotlin,旨在提高 Java 的生产率。它是一种静态类型的语言,可用于 JavaScript,以及 Java 虚拟机 (JVM) 中。由于 Google 在 2019 年宣布将其选为首选开发语言,因此 Kotlin 的流行度得以大幅提升。

使用 Kotlin 开发的流行应用包括:

  • Trello
  • Evernote
  • Coursera
  • Pinterest
  • Uber
  • 目前,有许多行业巨头企业正在考虑从 Java 或其他语言迁移到 Kotlin。

    Kotlin 的常见问题与解答

    相比 Java,Kotlin 是一种较新的语言,因此许多初学者 (甚至一些专业开发人员) 经常围绕着它,提出各种问题。下面便是一些常见的问题与解答。

    我应该在上手 Kotlin 之前学习 Java 吗?

    如果您是一位经验丰富的开发人员,并且掌握着与移动应用开发相关的基础知识,那么您可能无需成为 Java 专家,便可以开始学习 Kotlin。但是,如果您不太熟悉移动应用的开发,那么在上手 Kotlin 之前,最好通过学习 Java 来打下基础。

    我可以使用 Kotlin 进行 Web 开发吗?

    Kotlin 是一个全栈式的解决方案,因此它也可以被用于 Web 开发。在服务器上,您不但可以将 Kotlin 用在前端,也可以在后端使用它。

    Kotlin 和 Java 是否一回事?

    Kotlin 和 Java 在某些方面的确有着相似之处,但它们在速度和性能方面截然不同。

    Java:简介

    Java 是由 Sun Microsystems(后被 Oracle 收购了)于 1995 年发布的,一种面向对象的编程语言。目前,大部分 Android 应用,以及 Android 系统本身都是基于 Java 的。这正是其成为所有 Android 应用开发人员优先选择的原因。此外,由于 Java 的大多数元素都是开源的,因此,它很容易被用来进行程序开发。

    使用 Java 开发的流行应用包括:

  • Spotify
  • NASA WorldWind
  • Signal
  • CashApp
  • Minecraft
  • 下面,让我们基于各项功能特性,来了解 Kotlin 和 Java 之间的区别。

    编写代码的速度

    Kotlin 的主要优势之一在于简洁。在与 Java 同等实现最终目标的前提下,您可以用 Kotlin 更快地编写出更少量的代码,进而快速完成任务。

    不过,在使用 Kotlin 时,您可能需要花费更多的时间,去全面考虑解决方案。而使用 Java 则不需花费过多的时间去准备方案。因此,您需要自行判断,到底是要节省“磨刀功”、还是“砍柴功”了。

    性能与功能

    由于两种语言都可以编译出能够在 JVM 上运行的字节码(ByteCode),因此我们无法直接比较它们的内存使用情况。下面,让我们来看看 Kotlin 与 Java 在性能与功能上的不同:

  • Java 提供了异常检查的功能,Kotlin 则不然。
  • Kotlin 具有协程(Coroutines,可以帮助编写异步代码),Java 则没有。
  • Kotlin 提供了扩展功能。
  • Kotlin 内置了高阶函数 (Higher-order functions) 和 Lambda,因此开发者不必去处理 Retrolambdas 插件。在 Java 中,您将必须通过可调用函数,来实现高阶函数。同时,Java 在其第 8 版本中引入了 Lambda。
  • Kotlin 为委派提供了原生支持,并具有内联函数(inline functions)。
  • Java 具有非私有字段 (non-private fields) 和 NullPointerExceptions,Kotlin 则不然。
  • Kotlin 没有像 Java 那样的静态成员,但是它提供了替代对象。
  • Kotlin 具有 null safe 特性。
  • Kotlin 具有 smart casts,Java 则没有。
  • 总体而言,Kotlin 虽然不及 Java 功能丰富,但是它在开发 Android 应用性能方面比较占优。
  • 稳定性

    由于相对较新,因此 Kotlin 没有长期支持的版本。而 Java 有着 Java 8 和 Java 11 之类的长期支持版本。这就意味着,如果这些版本出现了问题,其原始开发者将会使用补丁程序,对其进行修复。

    可见,Java 在稳定性上胜出。当然,Kotlin 并不能因此被称为不稳定的编程语言。

    文档资料

    Oracle 提供了充足的 Java 官方文档,可供您学习与研究。此外,由于有着长时间的积累,您可以很容易地找到 Java 的相关教程、书籍和指南。

    作为相对年轻的语言,Kotlin 当然也有着不错的官方文档。不过,您需要通过深挖,才能找到更多的资源。

    社区

    作为一种古老的语言,Java 比 Kotlin 拥有更广泛的开发者社区。不过有调查表明(https://insights.stackoverflow.com/survey/2020#top-paying-technologies),业界有 62.9% 的开发者喜欢 Kotlin,而只有 44.1% 的开发者表示他们喜欢 Java。

    因此,您可以放心地使用这两种语言。如果碰到任何与语言有关的问题,您都可以从各个的社区,快速地获得在线支持与解决方案。

    易于学习

    由于 Kotlin 比 Java 更需要编程基础,因此 Java 更易于学习和实现。当然,如果您更善于抽象思想,那么学习 Kotlin 就不是什么问题了。

    编译速度

    有测试表明:在使用 Gradle(译者注:是一个基于 Apache Ant 和 Apache Maven 概念的,项目自动化构建开源工具)守护程序进行纯净 (clean) 构建时,Java 的编译速度比 Kotlin 快 17%; 而随着 Gradle 守护进程的持续运行,Java 最终的编译速度比 Kotlin 快 13%。

    当然,纯净构建在真实编码实践中极其少见,大多数开发人员都会用到增量 (incremental) 构建。下面是在对 Gradle 守护程序进行了两至三次持续运行后,不同类型的增量构建在编译速度上的比较结果:

  • 不作任何更改 – Java(4.6 秒),Kotlin(4.5 秒)。
  • 更改某个未被其他用户使用的文件 – Java(7 秒),Kotlin(6.1 秒)。
  • 更改项目中由其他文件导入的文件 – Java(7.1 秒),Kotlin(6 秒)。
  • 由上述结果可知,Java 的纯净构建速度更快; 而 Kotlin 在增量构建时更快。
  • 小结

    综合上述比较,我们不难看出:对于资深 Java 程序员而言,从自己熟悉的语言切换到另一种新的语言,其意义不大。而对于初学者而言,Kotlin 的学习曲线则更为陡峭。当然,Kotlin 的如下两个主要优势,可能会成为企业在项目中使用它的驱动原因:

  • Kotlin 能够大幅减少应用开发的用时。
  • Kotlin 可以减少应用崩溃的可能性。
  • 基于 Kotlin 的上述优势,如果企业需要在 Android 开发领域保持竞争优势的话,就会趋向选择 Kotlin,而不是 Java。那么企业内部的开发人员也就会顺应此趋势,开始学习 Kotlin,这种面向未来的语言。
  • 原文标题:Kotlin vs. Java in Android App Development,作者: Anand Mahajan

    阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

    腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

    代金券:在阿里云专用满减优惠券

    正文完
    星哥玩云-微信公众号
    post-qrcode
     0
    星锅
    版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计3037字。
    转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
    【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
    阿里云-最新活动爆款每日限量供应
    评论(没有评论)
    验证码
    【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中