写点什么

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

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

    阅读完需:约 12 分钟

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

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

针对 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:4112167
用户头像

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

关注

评论 3 条评论

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

几个超火的编程网站,别错过!

程序员鱼皮

CSS JavaScript html 前端 后端

性能即天元:vivo S12的落子与棋局

脑极体

2021年全国人工智能大赛正式启动,396万奖金等你报名!

OpenI启智社区

人工智能大赛

过冬

搬砖的周狮傅

随笔杂谈

首颗云原生边缘计算卫星升空,与KubeEdge一起探索“智慧太空”

科技热闻

为什么?为什么要先问目的?(27/28)

赵新龙

28天写作

启梦行动再扬帆 | 2021启智社区优秀项目&优秀开发者评选结果重磅揭晓

OpenI启智社区

启智社区 优秀开发者 优秀开源项目

都在说边缘计算,它到底是用来干啥的?

火山引擎边缘云

云计算 边缘计算 虚拟化 算力

HarmonyOS(鸿蒙)——滑动事件之上下左右滑动

李子捌

28天写作 21天挑战 鸿蒙开发 12月日更

记录与 Electron 的第一次亲密接触

何佩弦

跨平台 Electron

盘点2021(一)

圣迪

复盘 盘点 2021

Dubbo 框架学习笔记十四

风翱

dubbo 12月日更

慢跑的正确打开方式

wood

跑步 28天写作

openEuler高琨:积极推动开源合规 助力供应链安全

科技热闻

从AI前沿到科技自立:百度大脑的风向标意义

脑极体

Go+ 结构体方法定义教程

liuzhen007

28天写作 12月日更

低代码实现探索(十)流程执行器

零道云-混合式低代码平台

一文了解 Redis 内存监控和内存消耗

程序员历小冰

redis 28天写作 12月日更

第一财经年终总结

石云升

读书笔记 28天写作 12月日更

从0到1带你深入理解log4j2漏洞

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

为什么很难得出结论

将军-技术演讲力教练

软件设计之非功能性

xcbeyond

软件设计 28天写作 12月日更 非功能性

Go 语言快速入门指南:第七篇 方法

宇宙之一粟

12月日更

.NET中的Husky工具

喵叔

28天写作 12月日更

物联网资产管理系统解决方案

低代码小观

物联网 资产管理 CRM 企业管理系统 CRM系统

57 K8S之自动弹性缩放

穿过生命散发芬芳

k8s 28天写作 12月日更

低代码实现探索(十一)流程中的动作执行器

零道云-混合式低代码平台

黑客是怎么盗取你的密码的?

喀拉峻

黑客 网络安全

26《重学JAVA》--网络编程之Socket类

杨鹏Geek

Java25周年 28天写作 12月日更

绩效评估的why&how

mtfelix

28天写作

百度智能云 AI 公有云服务市场,连续五次第一!

百度大脑

人工智能

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