Java是不少开发者建立安卓应用的首选语言。但它在 Android 界的领导地位正受到各类新语言的挑战,Kotlin就是其一。虽然Kotlin最近才开始受到热捧,但有为数很多的人相信 Kotlin 在不久的未来,会成为Java最大的竞争者,甚至会把 Java 拉下移动开发的王座。下文中,咱们对 Java 和 Kotlin 进行详细对比,以帮助您肯定哪种语言最适合于您从此的移动开发项目 。前端
JAVA
当谈及 Android 应用开发时,Java 是许多开发者的最爱 – 主要是因为 Android 自己就是用 Java 编写的。Java 由 Sun Microsystems(已被 Oracle 收购)所开发,是一种面向对象编程语言,在 GitHub 上位居语言活跃度榜单第二位。这说来也并不奇怪 – 它已经存在了 20 多年,而它的流行度彷佛只增不减。android
Java 的优点git
- 易学易懂;
- 灵活性 – 您能够在浏览器窗口或虚拟机中运行它。当您重用代码和更新软件时,这一特性会显得很方便;
- 对于开发跨平台应用来讲,是一个不错的选择;
- 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 编写的一些优秀开源应用的示例:github
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 时,请记住,对于那些已经找到适合本身的工具和策略的开发者来讲,切换到新语言并不必定是好事。app
结语
不管你喜欢使用Java仍是Kotlin,对于开发者,在熟练掌握了某种语言的基础上,学习新的语言,有肋提高我的竞争力。不妨像文中提到的那些开发者那样,尝试用这些语言来开发一些项目。实践永远是最好的磨练。框架