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 性能的提升。
(目前 Kotlin 1.4 已经发布了第一个里程碑版本,想了解更多 Kotlin 1.4 新特性可查看: Kotlin 1.4)
请您对比一下 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 等等。
关于提升自己,本质是一个不断学习、不断复盘总结,从而不断迭代的过程。
就拿我们自己做的手机自助回收项目来说,由于它涉及了各种通信协议、图像识别等技术,比较复杂,在项目初期我存在着很强的挫败感。但随着项目的推进、产品的迭代,以及自身的不断学习,我在此过程中加深了对项目的认知以及对整个系统架构的理解,也提升了自己从整体出发解决问题的能力。
采访嘉宾介绍
沈哲,计算机软件与理论硕士,拥有10年移动开发经验,曾负责魔窗深度链接 SDK 的设计和研发(该产品已于2019年初卖给极光);曾负责京东到家上海的移动团队,全程参与今夜酒店特价App的开发,Decarta Map SDK的开发;拥有多年的服务端开发经验,曾负责京东旅行邮轮业务部门的后端团队,著有《RxJava 2.x 实战》。目前在爱回收创新中心,担任终端技术部负责人,负责隐私清除产品线以及手机自助回收机(MTA) 相关的研发。
为了让大家更清晰地认识 Kotlin 与 Andorid 开发的趋势,我们邀请到沈哲老师来到源创会栏目,开展主题为“如何使用 Kotlin 高效地开发 App ”的直播活动,直播时间为 4月17日 20:00,感兴趣的朋友千万不要错过。
详情请查看:如何使用 Kotlin 进行高效地开发 App
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
重磅!《2020 年中国 DevOps 现状调查》全面启动!
《2020年中国DevOps现状调查》全面启动!问卷填写地址:点我参与调研 IT互联网的变革浪潮奔腾不息,传统企业的数字化转型如火如荼,适应市场需求与创新力的提升是不变的主题,而引入DevOps是企业快速发展的便捷之路,打破开发、测试和IT运营部门之间的沟通壁垒,提升质量与效率,才是企业完美转身的方式。 近几年,我们见证了云计算、大数据、微服务架构和容器等技术井喷发展,对于企业打造DevOps生态链也提供了更加便捷的支持,促使企业在市场快速变化时也能实现大跨步有姿态的发展。可行业没有清晰标杆,野蛮生长下对于自身的真实水平,处于行业哪个阶段就成了很多企业的困惑,方向是否正确?未来道路是否平坦?怎样克服实践困难? 因此由中国信息通信研究院牵头发起的《研发运营一体化(DevOps)能力成熟度模型》即DevOps标准直击痛点,该标准分别从敏捷开发管理、持续交付、技术运营、应用设计、安全和风险管理及系统和工具等几个环节,全面评估企业DevOps实践的现状,进行优劣势分析,明确改进方向及策略。下图为《研发运营一体化(DevOps)能力成熟度模型》总体框架。 2019年,中国信息通信研究院联合云计算...
- 下一篇
榜单揭晓,这些软件为何入围开源软件趋势榜?| 有奖征文也来了,不要错过
!请一定要看到最后 第一季度暨首期「OSCHINA 开源软件趋势榜」的评选活动告一段落,榜单也新鲜出炉。下面我们来大致介绍一下排在前十位的软件,以及它们的入选理由。 在此之前,再次介绍一下项目入围「趋势榜」的条件: 能够直接反映当季热点事件(例如与疫情防控相关的 PaddlePaddle、与 Windows 7 退役相关的 Linux Lite) 在当季开源/收录的软件中,受欢迎度较高(例如文言、FastAPI、Monibuca 等) 在当季内有新的重要动向(例如成立了基金会的 TARS、正式 GA 的 Fedora CoreOS) 关于本榜单的更多详细信息可查看活动说明或是主题广场。 首期榜单传送门:https://www.oschina.net/project/2020/q1_projects_trending PaddlePaddle 分布式深度学习平台 PaddlePaddle 此次入围与它为疫情防控所做的贡献有关。 疫情期间,口罩成为人们生活中必不可少的物品,但同时也带来了一些不便利的体验,「戴上口罩后手机无法进行人脸识别」曾一度成为热议话题。密集人流区如何识别佩戴口罩与否并...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 设置Eclipse缩进为4个空格,增强代码规范
- Mario游戏-低调大师作品
- MySQL8.0.19开启GTID主从同步CentOS8
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16