写点什么

Kotlin 对战 Java:新秀会击败老将吗?

  • 2019-07-25
  • 本文字数:3732 字

    阅读完需:约 12 分钟

Kotlin对战Java:新秀会击败老将吗?

针对 Android APP 的两种编程语言 Kotlin 和 Java,本文介绍了什么是 Kotlin,用代码示例展示了 Kotlin 与 Java 的主要区别,并在多个功能方面对 Kotlin 与 Java 进行了比较。本文的观点是,如果主要目标是 android 开发,首选编程语言一定是 Kotlin。

Kotlin 会带来革命性的改变吗?

那些计划开发 android APP 的企业如今面临着许多挑战,尤其是,应该选择选用哪种技术来开发最好的 android APP。


即使有专业技术知识的人,也可能也会混淆 Kotlin 和 Java。而对于那些压根不知道这两个词的人,这里解释一下,Kotlin 和 Java 是 android APP 开发的两种编程语言。


自从 Google 引入 Kotlin 作为 android APP 开发的第二官方编程语言以来,Java 和 Kotlin 之间的战斗日益白热化了!


此外,像 Pinterest、Evernote、Uber、Trello、Postmates、Corda 等顶级科技公司已经将他们的 android APP 编程语言从 java 转换成了 Kotlin。这一现象进而引发了众多开发人员的好奇心。


您是否想知道,使用哪种编程语言做android APP开发将有助于你获得最好的 android APP 性能?不用担心!在本文的最后,你将得到想知道的答案:Kotlin 和 java,哪一种编程语言更好?


希望你读了本文后,也能得到其他的问题的答案,比如:



  • Kotlin 与 Java 相比如何?



  • Android 开发人员更喜欢使用哪种编程语言:Java 还是 Kotlin?



  • 如果同时学习 Java 和 Kotlin,这样会更好吗?



  • 为了做开发 Android,我应该先学 Kotlin 再学 Java 吗?



  • 我应该从 Java 转到 Kotlin 吗?



  • 从 Kotlin 转回 Java,这是个好主意吗?



本文的内容涵盖:



  • 什么是 Kotlin?(我假定人人都知道大名鼎鼎的 Java)



  • Kotlin 与 Java 的主要区别是什么?



  • Kotlin 与 Java 的比较。



  • Java 在哪些方面仍然保持其领先地位?


什么是 Kotlin?

简而言之,Kotlin 可以用一种更好的方式构建一个 APP,该 APP 可以在 Java 上运行,但减少了很多麻烦。Kotlin 是一种编程语言,它可以辅助开发人员在更短的时间内开发出优秀的 APP。


【延伸阅读】:你应该知道的最出名的7个用Kotlin编写的android APP。


Kotlin 是由捷克的 JetBrains 软件公司开发的一种静态类型的、面向对象的编程语言。它与 Java 语言具有互操作性,而且该语言十分简洁,并得到 Android studio 的支持。


我曾听说有人将 Kotlin 描述为“Java 之光”。这种说法最有可能的原因是,Kotlin 确实与 Java 有很多相似之处。


事实上,Kotlin 在您的设备中需要使用 java machine 来运行一个完成的 APP,这样就少了很多麻烦。这种编程语言要求在你的计算机、手机或其他智能设备上安装 Java。甚至,在同一个 APP 中,可以同时使用 Java 和 Kotlin 两种语言。

Kotlin 与 Java 的主要区别

介绍得足够多了,现在让我们继续讨论 Kotlin 与 Java 的主要区别是什么。

用 Java 创建数据类的代码示例

public class UserEntity {            private String userId;            private String name;            private String email;            private String mobileNumber;            public void setUserId(String userId) {            this.userId = userId;            }            public void setName(String name) {            this.name = name;            }            public void setEmail(String email) {            this.email = email;            }            public void setMobileNumber(String mobileNumber) {            this.mobileNumber = mobileNumber;            }            public String getUserId() {            return userId;            }            public String getName() {            return name;            }            public String getEmail() {            return email;            }            public String getMobileNumber() {            return mobileNumber;            }
复制代码

用 Java 创建相同数据类的代码示例

class UserEntity {          var userId: String? = null          var name: String? = null          var email: String? = null          var mobileNumber: String? = null
复制代码

Kotlin 哪里优于 Java?

开发人员对 Kotlin 和 Java 的看法褒贬不一。


但是,在为什么选用 Kotlin 而不是 Java 作为编程语言这一点上,他们却有一些共识:


  • 声明数据类型的代码通常又累赘又乏味,但是 Kotlin 给出了一种在代码运行时作出主动类型推断的解决方案。通过查看代码的其余部分以及使用数据的方式,Kotlin 让开发人员明白,这个函数正在使用什么数据类型。它有效地避免了开发人员在代码中不必要地声明表达式和数值的类型。

  • 我们都知道,一个人需要多年时间才能做到精通 Java 及其语法。相反地,Kotlin 却不需要这么久。Kotlin 的语法不像 Java 那么复杂。用 Kotlin 编写代码比 Java 简单。因为 Kotlin 吸取了之前存在的众多编程语言中的精髓。使用这样的编程语言,最终让阅读和理解代码也变得很简单,调试程序花费的时间也更少。

  • Kotlin 允许开发人员在不使用冗余类的情况下定义函数和静态对象。开发人员可以轻松地在代码中同一个地方完成对象和函数的定义。这会让代码更容易阅读和调试。


最后,用 Kotlin 编写的代码比 Java 更友好、更快捷、更容易。


Kotlin 与 Java 的比较

现在您已经了解了什么是 Kotlin,让我们从各个功能方面来比较 Kotlin 和 Java 的差异。

流行程度

当 Google 在 2016 年发布第一个稳定版本时,Kotlin 的市场份额在 2017 年 5 月增长到了 4.28%。到 2017 年 9 月,这一比例升至 7.54%。


而 2018 年的一项对 10 万 stack overflow 用户的调查显示,超过 7.54%的受访者使用 Kotlin 进行 android 开发。可以访问Kotlin的状态报告看看它现在的发展状况。


而 Java 语言的普及程度仍然处于巅峰转台。最新的证据是Java的TIOBE指数,这足以证明截至 2019 年 6 月,Java 仍然是全球最流行的 android 编程语言。

Android Studio 支持

说到 Java, Android 并不支持所有的 Java 功能。虽然 android 完全支持 Java 7,但 android 只支持 Java 8 所有特性中的一部分。


然而,已证实的是,Kotlin 在 android studio 中得到了更有效的支持。因此,如果想要支持编程语言的全部功能,你可以放心地选用 Kotlin。如果您计划在未来构建多个 APP,Kotlin 是一个完美的选择。

处理“Null”的能力

当您使用 Java 时,您可以将“Null”分配给任何变量。当您使用带有 null 值的对象引用时,会遇到一个麻烦,因为会得到一个“NullPointerException”异常。


在 Kotlin,这是它最大的优势之一。在 Kotlin 中,没有“数据类型”可以将 null 作为默认值。如果开发人员希望在“可设定为无效的(nullable)”变量中保留 null 值,则必须显式地去定义它。这样就从根本上消除了“NullPointerException”。

处理长时间运行的网络 I/O 或 CPU 密集型任务

Java 允许多线程在后台运行,但是它的处理机制很复杂,在单独一个线程中实现长时间运行的 I/O 或 CPU 密集型操作的功能。


而在 Kotlin 中,开发人员可以运行多个线程。它支持线程的并发协同。这些机制在一定程度上使得取消一个线程执行的时候,并不会阻塞任何其他线程。


因此,在处理长时间运行的网络 I/O 或 CPU 密集型任务方面,Kotlin 比 Java 更具有领先优势。

开发人员成本

2018 年底,Kotlin 编程是最受欢迎、最赚钱的技能之一。Kotlin 开发人员的平均年薪约为 14 万美元。


随着 Android APP 需求的增长,对精通 Kotlin 编程的开发人员的需求也在增加。因此,你应该放长眼光未雨绸缪地让自己的技能做好准备。


相比之下,Java 开发人员的雇佣成本在招聘 Kotlin 的雇佣方那里是可以承受的。因为市场上实在是有太多 Java 开发人员,你完全可以根据自己的项目需求在招聘中讨价还价。

构建更复杂的产品

如果您的目标是创建更大规模更复杂的产品,那么 Java 仍然是更好的选择,而且由于 Java 比 Kotlin 更成熟,Java 本身的特性更支持构建大规模软件。


另一方面,如果主要目标只是 android 开发,那么你的首选编程语言一定是 Kotlin,因为 Kotlin 生产效率更高,Google 对其支持更好。

性能和编译速度

JetBrains 公司声称 Kotlin 的性能比 Java 好是因为它的速度。Kotlin 支持内联函数,使用 lambda 代码时,这些内联函数让 Kotlin 比 Java 编写的代码运行得更快。


此外,Java 编译干净版本的速度比 Java 要快 10-15%。然而,在编译方面,Kotlin 和 Java 结果相近,或者 Kotlin 稍好一点。

Java 在哪些方面仍然保持其领先地位?

Kotlin 可能是新鲜事物,并且迅速地受到开发人员青睐,但是除了编程语言成熟度之外,Java 和 Kotlin 相比仍然有一些优势。而且,许多开发人员仍然更喜欢使用 Java 来进行 Android 开发。


Kotlin 中不支持下列功能:


  • 静态成员

  • 通配符类型

  • 非私有字段

  • 已检查的异常

  • 原始类型

  • 三元运算符 a?b: c

结语

选择最好的编程语言可能是一项棘手的工作。Java 和 Kotlin 都各有其优点。因此,要帮你做出正确的选择,还需要考虑这两个平台的长期发展战略。


您不能忽视这样一个事实,即 Google 自身正在逐渐远离 Java 语言。但另一方面,Java 作为许多开发人员的首选编程语言已经很长时间了。


由于结构上的相似性,这两种编程语言可以在一个项目中共存。


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


2019-07-25 18:4112595
用户头像

发布了 63 篇内容, 共 42.6 次阅读, 收获喜欢 119 次。

关注

评论 3 条评论

发布
用户头像
为赋新诗强说愁!
2019-07-30 09:42
回复
用户头像
"用 Java 创建相同数据类的代码示例" 应该是“用 Kotlin 创建相同数据类的代码示例"
2019-07-29 12:14
回复
用户头像
只能说大公司心里都有自己的小算盘
2019-07-26 18:13
回复
没有更多了
发现更多内容

架构实战营 模块六作业

felix

「架构实战营」

架构实战营-模块五作业

无名

架构实战营 「架构实战营」

淘宝首页“有一套”

阿里技术

SpringOne Platform 2016参会分享

阿里技术

阿里科学家凭集成学习技术获CIKM Cup竞赛冠军

阿里技术

魔镜魔镜请回答:FITURE为何上飞书?

ToB行业头条

博文推荐|零经验玩转隔离策略:多个 Pulsar 集群

Apache Pulsar

Java 架构 分布式 云原生 Apache Pulsar

阿里CTO张建锋:一根高尔夫球杆背后的数据智能[演讲全文]

阿里技术

王坚:世界上最遥远的距离是红绿灯与交通监控摄像头的距离

阿里技术

常用推荐算法(50页干货)

阿里技术

一个前端的自我修养

阿里技术

智慧警务指挥系统搭建,公安合成作战平台开发

电微13828808271

数字经济发展引热议,博鳌亚洲论坛第二届科创大会区块链分论坛开幕在即

时空云

区块链 创新 科技 元宇宙

TypeScript 之条件类型

冴羽

JavaScript typescript 翻译 大前端 进阶

“异地多活”设计辣么难?其实是你想多了!

阿里技术

建议收藏!HDC2021 HarmonyOS技术分论坛干货解读文章大汇总

HarmonyOS开发者

HarmonyOS 技术专题合集

[干货]基础机器学习算法

阿里技术

阿里一年建了两座世界级数据中心,怎么做到的

阿里技术

PackML从会到不会——模式(2)

陈的错题集

标准化 PackML

云边协同产业方阵成立,中国信通院与 EMQ 共建边缘计算技术规范

EMQ映云科技

物联网 IoT 边缘计算 边云协同

设计微博系统中”微博评论“的高性能高可用计算架构

奔奔

百度:YOLOX和NanoDet都没我优秀!轻量型实时目标检测模型PP-PicoDet开源

百度开发者中心

目标检测 开源技术

阿里研究员华先胜:图像搜索的前世今生

阿里技术

马云:“电子商务”将消失 新五通一平将引领未来

阿里技术

精读《高效 javascript》

CRMEB

[下篇]深度学习即将攻陷的下一个领域:NLP——ACL2016优秀论文解读(干货)

阿里技术

[干货]深度学习即将攻陷的下一个领域:NLP——ACL2016优秀论文解读(上篇)

阿里技术

基于深度学习的智能问答

阿里技术

[干货]语音技术最新进展-Interspeech总结

阿里技术

面向容器的资源调度技术对比

阿里技术

NQI质量基础设施服务云平台建设,NQI一站式线上平台开发

电微13828808271

Kotlin对战Java:新秀会击败老将吗?_语言 & 开发_Anchal Malik_InfoQ精选文章