Uncategorized

针尖对麦芒!Kotlin与Java,究竟谁才是安卓开发的真命天子?

kotlin1

如果您是一位移动端应用开发者,则 Java 大概是您创建 Android 应用的首选语言。但是您是否了解:Java 在 Android 界的领导地位正受到来自各种新语言的挑战?其中的佼佼者是 Kotlin,虽然它最近才开始受到热捧,但有为数不少的人相信 Kotlin 在不久的将来就会把 Java 拉下移动开发的王座。

下文中,我们将对 Java 和 Kotlin 进行详细对比,以帮助您确定哪一种语言最适合于您今后的移动开发项目 。

Java

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

kotlin2

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 插件并让它配置您的项目就可以啦~

insta

来自日本的 Asitaka 正在讲解如何用 Kotlin 开发类似 Instagram 的安卓 App

如果掌握诀窍的话,学习 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 时,请记住,对于那些已经找到适合自己的工具和策略的开发者来说,切换到新语言并不一定是好事。

kotlin3

你需要给团队至少一个月的时间来熟悉 Kotlin,否则有些团队成员可能无法在 Kotlin 项目开发启动时适应这个语言。您还需要记住,Java 不会就此没落,并且对于 Android 应用开发来说仍然是必不可少的工具。在 LiveEdu 上您可以接触到许多用 Java 开发的安卓项目,譬如:如何构建一个安卓版的在线音乐播放器

但如果您是初学者,想寻求新的挑战,那么试试 Kotlin 是个不错的主意,特别是当您想为创业公司开发一些新鲜项目时。但是,如果您正在管理一个移动开发者团队,最好是逐步试验 Kotlin,以确定这种新语言是否能为您带来实实在在的好处。

About author

About Author Dr. Michael Jurgen Garbade is the founder of LiveEdu.TV, Kyuda, Education Ecosystem. He is future Venture Capitalist, Future Politician and always on the lookout for the Next Big Challenge. Obtained Masters in business administration and physics, and a Ph.D. in finance with professional work experience in high-paced environments at Fortune 500 companies like Amazon and General Electric. Expertize: Python, PHP, Sencha Touch & C++, SEO, Finance, Strategy & E-commerce. He speaks English and German and has worked in the US, Europe, and Asia. At Education Ecosystem he is the CEO and runs business operations.