Java与Kotlin, 哪个是开发安卓应用的首选语言?

Java是很多开发者创建安卓应用的首选语言。但它在 Android 界的领导地位正受到各种新语言的挑战,Kotlin就是其一。虽然Kotlin最近才开始受到热捧,但有为数不少的人相信 Kotlin 在不久的将来,会成为Java最大的竞争者,甚至会把 Java 拉下移动开发的王座。下文中,我们对 Java 和 Kotlin 进行详细对比,以帮助您确定哪一种语言最适合于您今后的移动开发项目 。

JAVA

当谈及 Android 应用开发时,Java 是许多开发者的最爱 – 主要是由于 Android 本身就是用 Java 编写的。Java 由 Sun Microsystems(已被 Oracle 收购)所开发,是一种面向对象编程语言,在 GitHub 上位居语言活跃度榜单第二位。这说来也并不奇怪 – 它已经存在了 20 多年,而它的流行度似乎只增不减。

Java 的优势

  • 易学易懂;
  • 灵活性 – 您可以在浏览器窗口或虚拟机中运行它。当您重用代码和更新软件时,这一特性会显得很方便;
  • 对于开发跨平台应用来说,是一个不错的选择;
  • Android 依赖于 Java — Android SDK 包含许多标准的 Java 库;
  • Java 拥有一个大型的开源生态系统,部分原因是由于 Google 为 Android 采用了Java 虚拟机(JVM);
  • 在 Gradle 中加速汇编 – 我们在汇编大型项目时都非常感谢它;
  • Java 应用更加紧凑 – 与 Kotlin 相比,Java 应用往往占空间更少(即使是完全模拟);一个包含复杂计算流程的 Kotlin 应用在低配置的用户设备上运行可能会十分缓慢(如果开发者缺乏经验的话);
  • 顶级的开发速度 – Java 具有比 Kotlin 更快的构建过程。

JAVA 的劣势

  • Java 的一些限制会导致 Android API 的设计出现问题;
  • 作为一种冗长的语言,Java 需要编写更多的代码,这带来了更高的错误率和 bug 风险;
  • 与许多其他语言相比,Java 执行速度较慢,并且占用大量内存。

使用场景

以下是使用 Java 编写的一些优秀开源应用的示例:

KOTLIN

Kotlin 是由来自 JetBrains 公司(代表作:集成开发环境 IntelliJ IDEA)的开发者所设计的,它为 Java 添加了一些现代功能,这对移动开发很有帮助。Kotlin 是一种基于 Java 虚拟机(JVM)的开源、静态类型语言,但您也可以将其编译为 JavaScript 或 Native,以构建可在 iOS 上运行的代码。您只需要安装好 Kotlin 插件并让它配置您的项目就可以啦~

如果掌握诀窍的话,学习 Kotlin 其实并没有想象中那么难。在 LiveEdu 上有一个点击率超高的教程 — 如何用 Kotlin 开发类似 Instagram 的安卓 App。主讲者 Asitaka 目前在日本一家大型电信公司 KDDI 株式会社担任系统工程师,拥有多年业界经验。他擅长使用包括 Java 和 Kotlin 在内的多种语言,因此对于这两个语言在安卓开发方面的利弊了如指掌。与市面上现有教程不同,这套教程将从业界实战角度出发,提供一些 Kotlin 的屠龙之技。不妨试试吧!

KOTLIN 的优势

  • 在 Android 开发中获得了很高的流行度,但它也被用于 Spring 5 等后端项目;
  • 从 Java 切换到 Kotlin 非常简单 – 您只需安装 Kotlin 插件,将其添加到 Gradle 构建文件中,然后单击 “转换” 就好了;
  • 包含智能扩展功能,帮助开发者构建干净的 API;
  • 在其类型系统中设有 null – null 问题是 Java 开发中的一个常见问题,由于 Android 经常使用 null 来表示值不存在,因此 Kotlin 通过将 null 直接设置在类型系统中来解决该问题;
  • 它比 Java 简洁得多,这意味着代码写错的几率大大下降了;
  • 与 Java 可互操作 – 您可以在 Kotlin 中编写新模块,无需担心它们不能与现有 Java 代码协同工作;Kotlin 兼容所有 Java 库和框架、JVM,并且可以与 Gradle 或 Maven 构建系统进行整合;
  • 开发者可以从 Anko 库 和 Github 上的 2000 多个 Kotlin 项目中汲取灵感;
  • 采用 Kotlin 不需要任何费用(除了学习和练习)。

KOTLIN 的劣势

  • 由于 Kotlin 语法简洁(这既是好处也是挑战),将整个团队转为用 Kotlin 开发时,学习曲线将会非常陡峭;
  • 编译速度慢于 Java(尽管 Kotlin 在某些情况下被证明可以击败 Java);
  • 开发者社区很小,这意味着学习资源有限,很多问题难以得到解答;看一看 Stackoverflow 你就大概了解情况了 – 只有大约 8000 个含有 Kotlin 标签的问题,但含有 Java 标签的问题却高达 137 万个;
  • 经验丰富的 Kotlin 开发者仍然很少见,因此为您的团队寻找导师可能会很棘手;
  • 与纯 Java 项目相比,Android Studio 自动完成和编译的运行速度往往较慢。

使用场景

以下是使用 Kotlin 编写的两个惊人应用:

尽管 Kotlin 拥有了许多 Java 不具备的优点,但它仍然存在一些缺陷。当试用 Kotlin 时,请记住,对于那些已经找到适合自己的工具和策略的开发者来说,切换到新语言并不一定是好事。

结语

无论你喜欢使用Java还是Kotlin,对于开发者,在熟练掌握了某种语言的基础上,学习新的语言,有肋提升个人竞争力。不妨像文中提到的那些开发者那样,尝试用这些语言来开发一些项目。实践永远是最好的磨练。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

这样的开源应用你相信它吗?

任何读过马修•加勒特作品的人都知道很多专门用来销售的软件是不靠谱的。一些Linux倡导者宣称开放自由而且免费的软件比封闭的专门用来谋利的软件更安全,然而这里有一...

892
来自专栏cloudskyme

谈谈云计算

业界比较认可的几个分类:SAAS、PAAS、IAAS 1、SAAS(软件即服务) 就是提供一种软件池,池中包括这样那样的内容,就像水电一样可以自由取送,然后按量...

9635
来自专栏FreeBuf

揭秘:充电宝是如何盗取你的个人隐私的?

中午吃完饭,看到一个微博中别人转的央视新闻《别被改装充电宝盗取隐私》觉得又是啥高大上的东西上了央视,看完后才知道是数字公司的某研究员做的伪装充电宝盗取隐私的玩意...

2207
来自专栏灯塔大数据

荐读|爬虫还在用Python?我与Node.js不得不说的故事

深夜闲来无事,默默的打开github,在搜索框中填入了”Stars:>1”,本想着依旧可以在第一页看到Spark的身影,结果第一个映入眼帘的是这个: ? 快速...

1.1K5
来自专栏IT技术精选文摘

全渠道客服中心聊天机器人实战

本文要点 客服中心的渠道多种多样,而且数量一直在增长。 企业需要支持所有这些渠道,可以自己开发服务,也可以向CPaaS供应商购买服务,或者集成已有的服务。 自研...

4017
来自专栏ImportSource

微服务业务开发三个难题-拆分、事务、查询(上)

微服务架构变得越来越流行了。它是模块化的一种方法。它把一整块应用拆分成一个个服务。它让团队在开发大型复杂的应用时更快地交付出高质量的软件。团队成员们可以轻松地...

5949
来自专栏FreeBuf

物联网安全研究之二:IoT系统攻击面定义分析

在前文中,我们了解了IoT技术的基本架构,本文我将来说说IoT安全,在此过程中,我们会尝试定义一种新方法来理解IoT安全,同时也会创建一个结构化流程来方便认知I...

3309
来自专栏机器人网

收藏:自动化工程师教你如何完整做好一个项目

我们学PLC有时候是为了做项目,做项目需要做些什么步骤呢,学习什么知识点,看看老工程师怎么告诉你…… 一.做一个PLC项目的大体流程如下 ❶、熟悉好现场环境和...

2766
来自专栏Crossin的编程教室

3分钟破译朋友圈测试小游戏

最近,朋友圈时不时会流行起某个测试类小游戏,比如你的性格图谱啦,你是三体中的哪个角色啦,你有什么超能力啦……昨天晚上在某个群里,又被一个测测你是什么书的小游戏刷...

4407
来自专栏编程心路

为什么人人都需要学习Git?

先来说说 Git 的由来,Git 是一个版本控制软件,最初是由 Linux 之父——林纳斯·托瓦兹 为了更好的管理 Linux 内核代码而编写的。当时 林纳斯 ...

1441

扫码关注云+社区