QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

Kotlin 生态调查结果出炉:超过 6 成的开发者用过 Kotlin 了

  • 2018-07-24
  • 本文字数:2953 字

    阅读完需:约 10 分钟

Kotlin 从 2011 年低调问世,在短短几年间,如冲天火箭般流行起来。一年前,谷歌宣布将 Kotlin 指定为 Android 官方编程语言;来自 Stack Overflow 的一项问卷调查显示,超过 10 万名受调者表示 Kotlin 是他们的第二大编程语言。英国软件公司 Pusher 对此感到非常好奇,究竟 Kotlin 有什么特别的地方,让开发者如此着迷。于是,Pusher 公司发起了一项针对 Kotlin 生态系统的问卷调查,从 2018 年 1 月份至 3 月份,为期三个月,受调者达到 2744 名。以下是这份问卷调查的结果及其简要分析。

01. 年轻的技术从业者更喜欢 Kotlin

超过 70% 的受调者为企业雇员,企业家和承包商占了 11% 左右。他们大部分都在科技行业工作,金融行业、教育领域和数字机构的比例则远远落后。保险行业和政府在采用 Kotlin 方面最为保守。

企业员工(72.4%),自由职业者(11.18%),学生(15.51%),其他(1.07%)。其中77.2% 属于科技行业

超过一半的受调者开发经验不足5 年。他们似乎比参与Stack Overflow 问卷调查的开发者拥有更少的经验。不过,“开发者流行度每5 年会翻一番”的如意算盘仍然会奏效。

在企业中使用Kotlin 的人数差异化严重。其中有三分之一的人表示,他们所在的公司有2 到5 个人在使用Kotlin,而这个数字恰好是一个Android 团队的平均人员配置。

0 人(20.6%),1 人(21.1%),2-5 人(32.1%),5-10 人(13.1%),10-50 人(9.4%),50 人以上(3.7%)

02. Kotlin 正在走向成功

在 2015 年之前,Kotlin 以每年翻一番的速度增长。2015 年早些时候,来自 Square 的 Jake Wharton 发表了一篇文档,详细说明了他们为什么要采用 Kotlin。他们的团队以开源流行的 Android 开发库而闻名。调查结果显示,那一年有很多人跟风,开始发表有关 Kotlin 的演讲和博客。

2017 年 5 月之后,Kotlin 的采用开始爆发。谷歌宣布将 Kotlin 作为 Android 的官方开发语言,大量 Android 开发者开始使用 Kotlin。谷歌的这一举措无疑极大加快了 Kotlin 在未来几年的采用速度。( https://youtu.be/Y2VF8tmLFHw

学生和年轻开发者非常相信谷歌的实力。刚开始,使用 Kotlin 的大多是有经验的专业开发者,但在谷歌做出宣布之后,更多的年轻开发者参与进来,特别是学生。

Kotlin 吸引了来自各种背景的开发者。尽管 Java 仍然占主导地位,不过受调者当中使用其他编程语言的也很多,不过也有少部分人将 Kotlin 作为他们的第一开发语言。

03. JetBrains 的努力如愿以偿

超过 60% 的工作者在他们工作的项目中使用 Kotlin。相反,只有三分之一的学生在他们的工作和个人项目中使用 Kotlin。还有将近一半的人表示会在未来使用 Kotlin。

官方网站是目前最受欢迎的Kotlin 学习去处。不过,学生更喜欢YouTube 喝Udemy 的在线教程,以及各种技术大会和演示。这些网站似乎会在接下来的几年提供视频流和实时代码服务,就像Twitch 那样。

有很大一部分开发者在他们的工作项目和个人项目中使用Kotlin。不过,在个人项目中显然会用得更多,因为个人项目规模更小,更容易进行转换,也更方便进行实验。

Android 是 Kotlin 的主要使用平台。大量的专业开发者和学生使用 Kotlin 开发 Android,而在后端,使用 Kotlin 的非常有经验的开发者。

04. 萝卜青菜各有所爱

每个受够了 Java NullPointerException 的人都喜欢 Kotlin 的 Null 安全特性。其中有 4% 的人选择了“一等函数”。

扩展函数被大量使用。77% 的受调者表示,扩展函数提高了代码的可读性,特别是在进行函数式编程或在创建 DSL 时。越是有经验的开发者,越是喜欢用扩展函数。以下是扩展函数的常见使用场景:

  • “我使用扩展函数……让算法从头到尾看起来很容易理解。”

  • “只是为了检查 null(因为我们有一个 Java app)”。

  • “主要是为了让代码更干净。我会尽可能控制它的作用域,除非它是一个非常通用的扩展函数”。

  • “几乎用它做所有的事情。我经常使用内部扩展函数,以避免全局命名冲突”。

  • “最主要将它用作 DSL 构建器的 lambda 参数”。

除了扩展 Java 类,人们也常常将 Java 代码迁移到 Kotlin。超过 87% 的受调者已经完成了迁移。他们有的使用了迁移向导,有的直接手动修改代码。超过 10% 的人使用向导将整个项目迁移到 Kotlin,其中有 22% 是学生或者经验不足一年的新手。

超过四分之一的受调者迁移到 Kotlin 后又回到了 Java。有技术方面的原因,也有组织方面的原因。其中使用了反射或代码生成的工具是被提及最多的因素。

  • “Kotlin 的枚举不能包含常量。在自定义注解时(比如 @IntDef),为了保持接口的整洁,需要将值保存在枚举中”。

  • “我们正在使用 Realm,但它不能与数据类一起使用”。

  • “我们的 Java 代码中使用了 Retrolambda,因为类型缺失,很难转到 Kotlin”。

  • “另一个团队不喜欢 Kotlin,我们也预料不到会这样。”

  • “这不是我们决定的,我们是按照公司的规则来的”。

Kotlin 跨平台正在开始展现,但速度较慢。只有差不多四分之一的受调者表示,他们曾经用过跨平台支持,而且大部分使用了 Koltin/Native,然后是 KotlinJS。

假以时日,采用这些特性的人会增加。那个时候,Kotlin 才真正有可能成为“编写一次,到处运行”的编程语言。

协程(coroutine)是 Kotlin 官方提供的异步编程模式,但因为是实验性的,所以很少被用到。只有三分之一不到的受调者使用了协程,而这些人都拥有超过 5 年的开发经验。他们似乎已经在其他语言中使用过协程,所以在 Kotlin 中使用协程不会刚到别扭。

  • “因为它是实验性质的,所以我先不用它。”

  • “我们基本上将它作为 fintech 的解决方案,app 的核心逻辑使用协程编写。”

  • “我用了 Arrow 这个库,它使用协程实现 for 循环。”

  • “目前正在使用协程替换 CompletableFuture。协程主要用在高并行计算中的任务管理。”

JetBrains 和 Android Studio 几乎统领了 Kotlin 生态圈的开发构建工具。从图上可以看出,它们都位于 Gradle(Android 项目的默认构建工具)的左边,而独立编译器 KotlinC 的使用比例较低。

与协程类似,DSL 也没有被广泛使用,因为它属于高级特性。大概有40% 的受调者使用了DSL,除此之外,有四分之一的人自己开发DSL。当被问及他们都开发了哪些类型的DSL 时,一般的受调者表示,他们开发的DSL 都是与特定领域相关的,比如金融、大数据等。其他DSL 还包括用于Android 和配置工具的DSL。

学生们喜欢玩文字游戏。越是有经验的开发者,对此越是不关注。

2019 年的 Kotlin 将会怎样发展?

Kotlin 的快速增长让人兴奋不已,但它是否真的像看起来的那么有前途?

因为有 JetBrains 和谷歌作为后盾,以及在开发者社区中广泛流行,我们可以确信,Kotlin 会一路走好。但关键的问题是:它是否能够突破 Android,进入到其他的领域?

JetBrains 在极力推动它的多平台梦,但在未来几个月或者几年内是否能够看到令人欣喜的增长?Kotlin 会成为 Web、iOS 或者后端开发者的新标准吗?

不管怎样,即使它需要几年时间才能跨出 Android 的藩篱,我们仍然会看到新的开发者加入到 Kotlin 的行列。他们的工具箱里将会多出一门万能的跨平台编程语言,这门语言涵盖了面向对象编程、函数式编程、脚本编程、声明式编程。这意味着 Kotlin 将会在编程语言领域产生重要影响,成为编程语言的标杆。

有一件事情是可以肯定的:Kotlin 生态圈的发展让人拭目以待。

查看英文原文: https://pusher.com/state-of-kotlin

感谢覃云对本文的审校。

2018-07-24 14:503214
用户头像

发布了 731 篇内容, 共 454.9 次阅读, 收获喜欢 2003 次。

关注

评论

发布
暂无评论
发现更多内容

ING国际银行基于Volcano的大数据分析平台应用实践

华为云开发者联盟

云计算 云原生 后端 华为云 企业号 1 月 PK 榜

HummerRisk V0.9.0:增加RBAC 拓扑图,云检测、漏洞、主机等模块增加规则

HummerCloud

开源 云原生安全

软件测试/测试开发 | 接口自动化测试中,如何做断言验证?

测试人

软件测试 自动化测试 接口测试 测试开发

技术人职场系列-务虚与务实

CatTalk

技术人生 职场发展

理想问鼎销冠,数据库能帮助新能源车企赢得下半场么?

YMatrix 超融合数据库

案例分享 新能源汽车 造车新势力 超融合数据库 YMatrix

中冶赛迪*IoTDB | 多项目全流程以IoTDB为时序数据处理方案,预计写入查询效率提升一倍

Apache IoTDB

国产时序数据库

DTSE Tech Talk 第18期丨统计信息大揭秘,数仓SQL执行优化之密钥

华为云开发者联盟

数据库 sql 后端 华为云 企业号 1 月 PK 榜

华为云云原生数据库:A Philosophy about “less”

华为云开发者联盟

数据库 后端 华为云 企业号 1 月 PK 榜

华为云GaussDB(for MySQL)通过中国信通院“可信数据库”评测

华为云开发者联盟

数据库 后端 华为云 企业号 1 月 PK 榜

Volcano 社区 v1.7.0 版本正式发布 | 云原生批量计算

华为云开发者联盟

云计算 云原生 华为云 Volcano 企业号 1 月 PK 榜

2022年15款实用有趣的小程序推荐

FN0

小程序 小程序商城 小程序模版

荣誉+1,OpenMLDB 荣获 InfoQ 2022 年度杰出开源运营团队

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

TDengine 时序数据特色查询语法详解,助力时序场景下的应用开发

TDengine

数据库 tdengine 时序数据库

Sealer 0.9 :帮助集群和分布式应用实现 Build、 Share、Run

阿里巴巴云原生

阿里云 开源 云原生 sealer

来自掘金和 InfoQ 的“新年礼物”,时序数据库 TDengine 荣登两大知名技术社区重磅榜单

TDengine

数据库 tdengine 时序数据库

KaiwuDB 首席解决方案专家 金宁:1.0 时序数据库核心功能解读

KaiwuDB

时序数据库 海量数据高吞吐 复杂查询

SAST-静态应用安全测试

华为云PaaS服务小智

模块七--王者荣耀商城异地多活架构设计

闲人Eric

架构实战营

致 Tapdata 开源贡献者:聊聊 2022 年的进展和新一年的共建计划

tapdata

软件测试/测试开发 | 接口测试中如何使用Json 来进行数据交互 ?

测试人

json 软件测试 自动化测试 接口测试 测试开发

【表面缺陷检测】表面缺陷检测数据集汇总

机器不学习我学习

软件测试/测试开发 | 接口自动化测试中如何对xml 格式做断言验证?

测试人

软件测试 自动化测试 接口测试 测试开发 接口自动化

软件测试/测试开发 | 接口自动化测试如何搞定 json 响应断言?

测试人

json 软件测试 自动化测试 接口测试 测试开发

为什么MySQL数据删除了一半,表文件体积却没变小?

程序员拾山

MySQL

光神经网络ONN:直接对光信号进行神经网络处理

Zilliz

别忘记我:通过局部-全局内容建模进行文本擦除方法

合合技术团队

图像识别 图像处理 文本 图像擦除

火出圈的《中国奇谭》,如果浪浪山的小妖怪们也用WorkPlus

BeeWorks

以数据赋能AI量产落地,澳鹏团队在浦东AI智能创新应用大赛斩获佳绩

澳鹏Appen

人工智能 数据标注

玖章算术CEO叶正盛:程序员必须掌握的数据库原理

NineData

数据库 程序员 开发 dba 数据库技术

阅文加入 OpenCloudOS 操作系统社区,作为成员单位参与社区共建

OpenCloudOS

Linux

一个专科生的 2022 年终总结——默默努力,成为更好的自己

程序人生 年终总结 成长感悟 自学之路

Kotlin生态调查结果出炉:超过6成的开发者用过Kotlin了_Android/iOS_Pusher_InfoQ精选文章