QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:4112684
用户头像

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

关注

评论 3 条评论

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

加密猫MIMI系统APP开发|加密猫MIMI软件开发

系统开发

应急指挥中心平台搭建,移动可视化指挥解决方案

t13823115967

可视化数据分析搭建 应急指挥

一线大厂开源三份JDK+Spring+Mybatis源码笔记

Java架构追梦

Java spring 源码 jdk mybatis

Java岗四面字节跳动成功之前,我都刷了那些面试题以及做了那些准备!

Java架构之路

Java 程序员 架构 面试 编程语言

GitHub标星力推!我掏空了各大搜索引擎,给你整理了188道Java面试题,满满干货记得收藏

Java架构之路

Java 程序员 架构 面试 编程语言

限时!字节Java程序性能优化宝典开源,原来这才叫性能优化

996小迁

程序员 面试 性能优化 笔记

PostgreSQL 13 RPM中有哪些新功能?

PostgreSQLChina

数据库 postgresql 开源

速来围观!阿里P8大牛写出的JDK源码剖析及大型网站技术架构与业务架构融合之道

Java架构之路

Java 程序员 架构 面试 编程语言

区块链溯源平台优势,区块链溯源系统解决方案

13530558032

为什么香港云服务器更适合放新网站

德胜网络-阳

姐夫半夜不睡觉,竟躲在厕所看这“57道Redis面试题”?

Java架构之路

Java 程序员 架构 面试 编程语言

Demo分享丨看ModelArts与HiLens是如何让车自己跑起来的

华为云开发者联盟

人工智能 智能车 hilens

没能进入大数据领域

escray

面试 面经

字节二面跪拜“Redis源码”后,面试官直接推荐这份笔记!真是NB

比伯

Java 编程 架构 面试 程序人生

2021 云原生走向何处?

云原生实验室

一个企业用电有多浪费?90后开发者大显身手,让每度电从此更“聪明”!

华为云开发者联盟

AI 物联网 智慧园区

二十多岁的年纪是怎么成功四面字节跳动,最终拿到offer的?

Java架构之路

Java 程序员 架构 面试 编程语言

K8S 资源可视化利器:Kubectl-Graph

郭旭东

Kubernetes Kubernetes Plugin

高空立体云防控系统搭建,智能化平安小区建设方案

t13823115967

平安小区 智慧平安社区建设

智慧社区综合管理平台搭建,智慧平安城市建设

13530558032

周立齐出任电动车联合创始人:网红经济背后的病态消费心理

石头IT视角

微服务架构思考 - 理清楚,管起来

jorden wang

软件测试必须掌握的http网络协议知识

测试人生路

软件测试

盘点 2020 | 10 天开发前台系统技术系列

老魚

CSS 大前端 全栈 js 盘点2020

扒开 SqlSession 的外衣

田维常

mybatis

如何通过 Serverless 轻松识别验证码?

Serverless Devs

人工智能 Serverless 云原生

用一把吃鸡的时间,免费上云搭建网站应用

华为云开发者联盟

服务 建站

APICloud AVM 多端开发 |外卖 app 开发案例源码教程(上)

YonBuilder低代码开发平台

Vue 大前端 Web Worker 移动终端

Flash Player终将成为历史,HTML5正站在舞台的中央

葡萄城技术团队

面试必问的 Redis:主从复制

Java架构师迁哥

云上可靠性测试:让我们一起给开发找点事儿

华为云开发者联盟

安全 云服务 可靠性

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