共计 3037 个字符,预计需要花费 8 分钟才能阅读完成。
导读 | 还记得多年前有关 Android 与 iOS 孰优孰劣的辩论吗? 如今,Kotlin 与 Java 的争论,时常广泛地发生在开发人员之中。不过,由于大家往往关注的是 Java 所不具备的 Kotlin 功能,因此他们的结论可能略显偏颇。下面,我将从资深应用开发人员的角度,综合比较 Kotlin 与 Java 在不同领域的优缺点,以方便您做出判断和选择。 |
首先,我们来简单了解一下这两种语言。
由 JetBrain 推出的 Kotlin,旨在提高 Java 的生产率。它是一种静态类型的语言,可用于 JavaScript,以及 Java 虚拟机 (JVM) 中。由于 Google 在 2019 年宣布将其选为首选开发语言,因此 Kotlin 的流行度得以大幅提升。
使用 Kotlin 开发的流行应用包括:
目前,有许多行业巨头企业正在考虑从 Java 或其他语言迁移到 Kotlin。
相比 Java,Kotlin 是一种较新的语言,因此许多初学者 (甚至一些专业开发人员) 经常围绕着它,提出各种问题。下面便是一些常见的问题与解答。
如果您是一位经验丰富的开发人员,并且掌握着与移动应用开发相关的基础知识,那么您可能无需成为 Java 专家,便可以开始学习 Kotlin。但是,如果您不太熟悉移动应用的开发,那么在上手 Kotlin 之前,最好通过学习 Java 来打下基础。
Kotlin 是一个全栈式的解决方案,因此它也可以被用于 Web 开发。在服务器上,您不但可以将 Kotlin 用在前端,也可以在后端使用它。
Kotlin 和 Java 在某些方面的确有着相似之处,但它们在速度和性能方面截然不同。
Java 是由 Sun Microsystems(后被 Oracle 收购了)于 1995 年发布的,一种面向对象的编程语言。目前,大部分 Android 应用,以及 Android 系统本身都是基于 Java 的。这正是其成为所有 Android 应用开发人员优先选择的原因。此外,由于 Java 的大多数元素都是开源的,因此,它很容易被用来进行程序开发。
使用 Java 开发的流行应用包括:
下面,让我们基于各项功能特性,来了解 Kotlin 和 Java 之间的区别。
Kotlin 的主要优势之一在于简洁。在与 Java 同等实现最终目标的前提下,您可以用 Kotlin 更快地编写出更少量的代码,进而快速完成任务。
不过,在使用 Kotlin 时,您可能需要花费更多的时间,去全面考虑解决方案。而使用 Java 则不需花费过多的时间去准备方案。因此,您需要自行判断,到底是要节省“磨刀功”、还是“砍柴功”了。
由于两种语言都可以编译出能够在 JVM 上运行的字节码(ByteCode),因此我们无法直接比较它们的内存使用情况。下面,让我们来看看 Kotlin 与 Java 在性能与功能上的不同:
由于相对较新,因此 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 程序员而言,从自己熟悉的语言切换到另一种新的语言,其意义不大。而对于初学者而言,Kotlin 的学习曲线则更为陡峭。当然,Kotlin 的如下两个主要优势,可能会成为企业在项目中使用它的驱动原因:
原文标题:Kotlin vs. Java in Android App Development,作者: Anand Mahajan