Kotlin 势必取代 Java?
发布时间:2019-08-08 13:45

原标题:凯发会员Kotlin 势必取代 Java?

作为 Android 开发的两大编程语言,老将 Java 和新秀 Kotlin正呈现出分庭抗礼之势。那么在两者之间抉择时,孰胜孰劣?

作者 | Anchal Malik

译者 | 胡雪蕊,责编 | 郭芮

以下为译文:

对于企业来说,目前的Android开发面临着许多挑战,尤其是选择哪种技术用于开发最好的Android应用程序。

Kotlin和Java是用于Android应用程序开发的两种编程语言,即使是有技术背景的人,也会混淆Kotlin和Java,更不要说那些不知道这两个词的人了。而自Google推出Kotlin作为Android应用程序开发的第二种官方编程语言以来,Java与Kotlin之战就变得更加激烈了。

另外,包括Pinterest、Evernote、Uber、Trello、Postmates、Corda等顶级公司也已经将他们的Android应用程序从Java转换到了Kotlin——这就引起了开发者们的好奇心:在Android应用程序开发中,究竟哪种语言可以获得最佳的性能?不要担心,阅读本文你就会知道Kotlin 和Java哪种更好用了。

其他的一些问题还有:

  • Kotlin和Java比较如何?
  • 对于Java和Kotlin,Android开发者更愿意用哪个?
  • 同时学习Java和Kotlin是否更好?
  • 对于Android开发,应该先学Kotlin后学Java吗?
  • 我应该将Java转为Kotlin吗?
  • 从Kotlin转向Java是一个好主意吗?

还有一些谷歌上提问最多的问题:

  • Android操作系统(OS)上的应用程序大多是用什么编程语言编写的?
  • Android应用程序用什么语言编写?

展开全文

什么是Kotlin?

简单来说,Kotlin可以更好地构建一个能在Java上运行的应用程序,并且不会产生很多麻烦。Kotlin是一种编程语言,可以通过制作一款很好的应用程序帮助开发者们在更短的时间内构建应用程序。

Kotlin是一种静态类型的面向对象的编程语言,它是由JetBrains 开发的。它具有与Java的互操作性和简洁性,并支持Android Studio。

我听说过有人将Kotlin描述为“Java light”,这很可能是因为Kotlin与Java相似。

事实上,Kotlin利用你设备中的Java机器可以更容易地运行一个完成的应用程序。这就要求你的计算机、手机或其他设备上要安装Java。即使你可以在一个应用程序中同时使用Java和Kotlin。

基本介绍完之后,我们继续讨论Kotlin与Java的不同之处。

1、在Java中创建数据类型:

publicclassUserEntity{

privateString userId;

privateString name;

privateString email;

privateString mobileNumber;

publicvoidsetUserId(String userId){

this.userId = userId;

}

publicvoidsetName(String name){

this.name = name;

}

publicvoidsetEmail(String email){

this.email = email;

}

publicvoidsetMobileNumber(String mobileNumber){

this.mobileNumber = mobileNumber;

}

publicString getUserId{

returnuserId;

}

publicString getName{

returnname;

}

publicString getEmail{

returnemail;

}

publicString getMobileNumber{

returnmobileNumber;

}

2、在Kotlin中创建数据类型:

classUserEntity{

varuserId: String? = null

varname: String? = null

varemail: String? = null

varmobileNumber: String? = null

Kotlin优于Java之处?

开发者们对于Kotlin 和Java的比较存在多种看法,但是下面是他们普遍认为Kotlin优于Java的地方。

声明数据类型可能既繁琐又乏味,但Kotlin提供了主动类型推断形式的解决方案。它可以通过查看其余代码来告诉开发者们某个函数正在使用的数据种类,并防止开发者们对代码中表达式类型和值进行不必要的声明。

我们都知道掌握Java及其语法需要多年时间,Kotlin则不是这样的,Kotlin的语法并不像Java那么复杂。在Kotlin中编写代码比在Java中操作要简单,它利用了之前编程语言中的最佳创意。而且,阅读和理解代码也很简单,调试花费的时间就会更少。

Kotlin允许开发者们在不使用冗余类型的情况下定义函数和静态对象。开发者可以很容易地在一个位置定义对象和函数,这样读取和调试代码就变得更加容易。最后,用Kotlin编写的代码比用Java编写的更友好、更快速以及更容易。

Kotlin和Java比较

既然你已经知道Kotlin是什么了,那么我们来看一下Kotlin和Java在功能方面的区别吧。

流行程度方面:

当Google于2016年推出其首个稳定版本时,截止到2017年5月,Kotlin的市场份额已增至4.28%。到2017年9月,增至7.54%。

2018年进行的一项调查显示,100,000名Stack Overflow用户中有超过7.54%的受访者使用Kotlin进行Android开发。

但是目前Java的受欢迎程度仍然处于高峰。Java的TIOBE索引可以作为最新证据,表明2019年3月Java是最受欢迎的Android编程语言。

Android Studio 支持方面:

说到Java,Android不支持所有的Java功能。虽然Android完全支持Java 7,但它只支持Java 8的部分功能。

但是,Kotlin在Android Studio支持方面是有效的。因此,在支持全方位功能方面,你无疑可以选择使用Kotlin。如果你计划在未来构建多个应用程序,Kotlin是一个非常不错的选择。

处理Null方面:

在使用Java时,你可以向任何变量发送“Null”。当你使用带有控制的对象引用时,你会觉得这是一种挑战,因为这时你会收到“Null Pointer Exception”。

而这就是Kotlin的一大优势。在Kotlin中,没有哪种“类”(type)在默认情况下有空值(null)。如果开发者们想要在“可空的”变量中保留空值,则必须明确定义这个空值,这就消除了“Null Pointer Exception”。

处理长期网络I/O或CPU密集型任务方面:

Java允许后台进行多线程处理,但很复杂,一个线程会涉及长期的I/O运行或CPU密集型运行。但在Kotlin中,开发者可以运行多个线程,同时又支持协同程序。这些操作在一定程度上会使执行无效,但不会阻塞任何线程。

因此,Kotlin在处理长期网络I/O或CPU密集型任务方面领先于Java。

开发成本方面:

2018年底,Kotlin是最受欢迎和最赚钱的一项技能,Kotlin开发者们的平均年薪约为140美元。随着Android应用程序开发需求不断增加,也亟需对Kotlin熟练的开发人员。因此,你应该做好长期准备,储备更高层次的人才。

相比之下,Java开发人员的招聘成本就比较低了,因为你可以根据项目要求和大量的开发人员商量薪资的事情。

创造更复杂的产品方面:

如果你的目标是大规模地创造一款更加复杂的产品,Java是更好的选择,并且Java的特点支持这一点,因为比起Kotlin,Java更加成熟。

另一方面,如果只有Android开发是主要的目标,那么毫无疑问你应该选择Kotlin,因为它在生产这方面具有优势,并且支持Google。

性能和编译速度方面:

JetBrains声称由于速度比较快,所以Kotlin的性能要优于Java。Kotlin支持内联函数,这些函数允许使用Lambdas的代码比用Java编写的同样代码运行速度要快。

另外,Java编译清洁构建快10%-15%,但是,在编译方面,Kotlin的结果是一样的,甚至还稍微快一些。

Java在哪些方面仍然处于领先地位?

Kotlin可能比较新,并且很受开发人员的欢迎。但是Java除了成熟之外,还是比Kotlin有优势,许多开发人员更愿意用Java来进行Android开发。

Kotlin不具备的特点:

  • 静态成员
  • 通配符类
  • 非私有域
  • 非检查型异常
  • 原始类型
  • 三元运算符a?b:c

如何选择编程语言是一件非常棘手的事情,Java和Kotlin都有自己的优点。因此选择一款适合你的编程语言,需要考虑两个平台的长期战略。

令人不能忽视的是,Google现在正在远离Java,但是另一方面,开发者们已经用了Java很长时间了。

在同一个项目中Java和Kotlin可以共存,因为它们在结构上很相似。

原文:https://www.excellentwebworld.com/kotlin-vs-java

本文为 CSDN 翻译,转载请注明来源出处。

【END】