AICon 深圳站 Keynote 嘉宾官宣!共探AI价值转化的实践路径 了解详情
写点什么

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:503507
用户头像

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

关注

评论

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

天翼云ECK云边一体化

天翼云开发者社区

帮助 Meta 解决 Presto 中的数据孤岛问题

Alluxio

sql 开源 presto Alluxio meta

基于TensorFlow Serving的YOLO模型部署

霍格沃兹测试开发学社

anime4k 在真机租用上的应用尝试

霍格沃兹测试开发学社

突破研发效能瓶颈,详解价值流分析的五大流动指标

万事ONES

荣耀开发者服务平台全新升级,助力开发者简单开发、高效分发

荣耀开发者服务平台

开发者 手机 安卓 荣耀 honor

数据库连接池

C++后台开发

MySQL 数据库 后端开发 Linux服务器开发 连接池

技术分享 | web自动化测试-PageObject 设计模式

霍格沃兹测试开发学社

云堡垒机能给公司带来哪些价值?选择哪款好?

行云管家

云计算 堡垒机 云堡垒机 云运维

Wallys//Industrial_Wireless_AP//network,card//QCN6024/QCN9074/QCN9024,WiFi,Card IPQ6010,802.11ax,2x2

wallys-wifi6

QCN9074 QCN6024 QCN9072

vue进阶面试题

bb_xiaxia1998

Vue 前端

凭这份堪称保姆级别的Java面试宝典,已怒斩3个大厂offer(阿里,美团,腾讯)

Geek_0c76c3

Java 数据库 开源 程序员 架构

字节跳动数据血缘图谱升级方案设计与实现

字节跳动数据平台

数据库 数据优化 数据血缘 数据研发

Java岗秋招最全面试攻略,看这份Java架构面试核心手册,足够了

Geek_0c76c3

Java 数据库 开源 程序员 架构

云行| 加码算力网络布局,天翼云发布南京3AZ节点

天翼云开发者社区

软件测试 丨 真实面试经历分享,不用再看其他面试题

测试人

软件测试 面试题 自动化测试 测试开发

2022年下半年如何备考 CKS

baiyutang

云原生 k8s 云安全 CKS

差点自闭!京东面试官夺命连环问操作系统,幸好最后拿到了offer

Geek_0c76c3

Java 数据库 开源 程序员 开发

教育行业在用的云管平台是什么牌子?

行云管家

云计算 教育 云管平台 云管理

从recat源码角度看setState流程

flyzz177

React

火山引擎CDN的技术演进与未来

火山引擎边缘云

《Vue.js技术内幕》有奖书评活动正式开启

图灵社区

vue.js 前端

2022年Q2全国网络零售发展指数同比增长3.3%

易观分析

市场 消费

React源码解读之React Fiber

flyzz177

React

墨天轮沙龙 | 麦杰科技卢学东:openPlant 实时数据库系统及应用

墨天轮

数据库 工业 国产数据库 实时数据库

《Vue.js技术内幕》有奖书评活动正式开启

图灵教育

vue.js 前端

存储资源盘活系统,“盘活”物联网架构难题(下)

天翼云开发者社区

20道高频vue面试题自测

bb_xiaxia1998

Vue 前端

opencv 使用 GPU 加速

霍格沃兹测试开发学社

英特尔为开源注入创新力量,加速AI应用

科技之家

中国信通院沙龙|火山引擎边缘云助力业务体验创新

火山引擎边缘云

云计算 云原生 边缘计算 边缘节点 信通院

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