v1.4发布在即,诞生近10年的Kotlin取代Java了吗?
Kotlin 诞生于 2010 年,出自 JetBrains,并于2012年正式开源。Kotlin 最初的设计目的是为了创建一种兼容 Java 的编程语言,并让它比 Java 更好。
作为一门相对比较新的 JVM 语言,Kotlin 与其他曾经“叫嚣”取代 Java 的语言有着截然不同的命运。2017年,Google 在 I/O 开发者大会上官宣 Kotlin 正式成为 Android 官方开发语言 。两年后的 I/O 大会上,Google 再次加码 Kotlin,宣布其成为 Andoid 开发官方首选语言。
多年来,在 Google 的大力推广下,Kotlin 在 Android 社区受到的关注度越来越高,也有不少国内开发者开始转移到 Kotlin 进行 Android 开发。尽管如此,许多 Android 开发人员仍然在犹豫,“迁移到 Kotlin 是否是一条正确的道路?”
为进一步了解 Kotlin 目前在国内 Android 开发领域的现状与发展趋势,我们邀请到爱回收终端技术部负责人、Android 开发专家沈哲,就相关问题对其进行了采访,希望能够给想要接触和了解 Kotlin 的 Android 开发者带来启发。
以下为采访内容:
Kotlin 相对来说是一个比较新的语言,它在哪些方面打动了您,让您选择使用 Kotlin 来进行移动端开发呢?
沈哲:
Kotlin 的语法融合了 Scala、Groovy、Python、Swift 等众多语言的特性,如果使用过其中任意一门语言,上手 Kotlin 是非常容易的。花几天熟悉过语法之后,就可以直接进行开发。
Kotlin 是一门务实的语言,函数式思想、各种语法糖、协程等等特性都是打动我的地方。
特别是,Kotlin 函数式编程方式相比于 Java 是思想上的变化。Kotlin 的各种语法糖简化了代码量。Kotlin 的协程吸收了各家语言协程的特性,同时让异步编程变得简单。
据我们了解,Kotlin 是为了弥补 Java 的部分缺点而诞生的,那么与传统的安卓开发语言 (Java)相比,Kotlin 的优势体现在哪些方面,或者说它弥补了 Java 的哪些缺点呢?
沈哲:
我整理了 Kotlin 几个方面的优势:
1. Kotlin 的语法糖多,能够减少代码量。
2. 从编码层面上能够减少空指针的产生,因为需要对变量在 null 上的检查,以及支持"?."、"?:"来处理 null。
3. 兼容 Java 的语法,不像 Scala 那样另起炉灶。因此,绝大多数第三方 Java 库可以直接使用。
4. IDE 层面支持直接将 Java 代码转换成 Kotlin。
5. 相比于 Java 8,更好地支持 lambda 表达式。
近年来 Kotlin 发展势头很猛,Google 也将 Kotlin 列为安卓开发推荐语言,网上也有很多朋友在讨论 Kotlin 是否会取代 Java 在安卓开发中的地位,那么当前使用 Kotlin 开发 Android 应用的现状是怎样的?有很多人已经转到 Kotlin 上了吗?
沈哲:
当前越来越多的开发者,会选择 Kotlin 作为原生 App 的首选开发语言。去年这个时候,已有调查报告显示大约有40%的开发者使用了 Kotlin。Kotlin 已经超越 Scala 和 Clojure,成为 JVM 上第二大受欢迎的语言。
就我所在的部门而言,Android 新的项目、包括 sdk 的项目都是采用 Kotlin 进行开发的。爱回收其他部门的 Android 项目也大都会使用到 Kotlin。我在上一家公司时,也要求 Android 团队开始使用 Kotlin 开发 Android App。
Java 诞生了这么多年,用户人群也相当庞大,对于这部分开发者转到学习 Kotlin 会有哪些难点?以及怎样克服呢?
沈哲:
我们创新部门使用的后端语言主要是 Kotlin、Python。Kotlin 用于提供 API 服务,Python 用于深度学习。Kotlin 的使用者大都是 Java 开发者,他们使用 Kotlin 之后,普遍觉得 Kotlin 容易上手、简化代码。当然,如果想要使用好这门语言,而不是只是当 Java 来使用,那还是需要一些编程思想上的转变。建议开发者可以去补充一些函数式编程的知识。
如果接下来使用 Kotlin 开发安卓想要发展得更好,Kotlin 本身的生态还有哪些需要优化的地方?
沈哲:
Kotlin 本身需要完善 Multiplatform 的功能、提升性能,这也是 Kotlin 1.4 值得期待的地方。
随着 React Native、Flutter 等跨平台技术的兴起,越来越多的公司采用这些技术进行混合开发。使用这些跨平台技术比较适合开发 UI 层,但是对操作系统底层 API 的调用、多线程的使用并不适用。
很多 App 的业务逻辑相对复杂,需要针对不同的移动平台单独去实现。如果能够借助 Kotlin Multiplatform 技术开发通用的业务逻辑,则大大提高开发效率。
既然您提到了即将更新的 Kotlin 1.4 版本,能否谈谈对于新版本除了 Multiplatform 相关功能以外还有哪些特性是您比较关注的呢?
沈哲:
我个人比较期待的新特性还有以下几个:
1. 之前,Kotlin 的 SAM 转换用于提高 Kotlin 调用 Java 的便利性。并且只适用于 Kotlin 对 Java 的调用,而且必须是 Java 接口。在 Kotlin 1.4 之后,也可以将其与 Kotlin 函数和接口一起使用。
2. Kotlin 1.4 将使用新的,功能更强大的类型推断算法。
3. Kotlin/Native 性能的提升。
请您对比一下 Android 与 iOS 当前的开发状况,Android 还有优势吗?
沈哲:
相比 iOS,Android 有一个天然的优势是可以应用于物联网(IoT)。例如 Google 的 Android Things 操作系统,它可以直接复用现有的 Android 知识。
If you can build an app, you can build a device. 只要你会开发APP,你就能开发智能设备。而物联网是未来一段时间的发展趋势,对于新人开发者来说是个很好的发展方向。
大前端时代,移动端开发者应该具备哪些新的能力?又如何提升自己呢?
沈哲:
其实无论身处什么时代,程序员都需要拥有扎实的计算机基础和快速的学习能力。
具备上述两点,Kotlin、Flutter、Vue 等这些语言和框架都可以快速掌握。
表现层的技术总是日新月异,而亘古不变的技术才是最重要的。
移动端的开发者想要具备更好的竞争力,可以考虑深挖一些领域。例如音视频、图像处理、终端侧的 AI 等等。
关于提升自己,本质是一个不断学习、不断复盘总结,从而不断迭代的过程。
就拿我们自己做的手机自助回收项目来说,由于它涉及了各种通信协议、图像识别等技术,比较复杂,在项目初期我存在着很强的挫败感。但随着项目的推进、产品的迭代,以及自身的不断学习,我在此过程中加深了对项目的认知以及对整个系统架构的理解,也提升了自己从整体出发解决问题的能力。
为了让大家更清晰地认识 Kotlin 与 Andorid 开发的趋势,我们邀请到沈哲老师来到源创会栏目,开展主题为“如何使用 Kotlin 高效地开发 App”的直播活动,直播时间为 4月17日 20:00(明晚),感兴趣的朋友千万不要错过。
详情请阅读原文查看。
采访嘉宾介绍
沈哲,计算机软件与理论硕士,拥有10年移动开发经验,曾负责魔窗深度链接 SDK 的设计和研发(该产品已于2019年初卖给极光);曾负责京东到家上海的移动团队,全程参与今夜酒店特价App的开发,Decarta Map SDK的开发;拥有多年的服务端开发经验,曾负责京东旅行邮轮业务部门的后端团队,著有《RxJava 2.x 实战》。目前在爱回收创新中心,担任终端技术部负责人,负责隐私清除产品线以及手机自助回收机(MTA) 相关的研发。
能否挑战TensorFlow?3月国产开源深度学习框架集中爆发