导读 | 还记得多年前有关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
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/125653.html