免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

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

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

关注

评论

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

Android快速转战Kotlin教程,安卓已死

android 程序员 移动开发

Android性能优化推荐书,享学课堂课程怎么样

android 程序员 移动开发

Android技术类校招面试题汇总:扔物线rxJava

android 程序员 移动开发

android插件化原理,android开发视频百度网盘

android 程序员 移动开发

极光笔记丨百亿级数据的实时存取优化与实践

极光JIGUANG

高可用 软件架构 多级存储系统 高性能存储

Android技术类校招面试题汇总,享学课堂Android架构师课程

android 程序员 移动开发

COSCon'21 参会指南 你想要的这里都有

开源社

开源社区 第六届中国开源年会 COSCon'21 开源社

Android开发进大厂面试必备技能,大厂面试必备技能

android 程序员 移动开发

Android开发面试题!动脑学院安卓教程vip2019

android 程序员 移动开发

Android插件化主流框架和实现原理,挑战大厂重燃激情

android 程序员 移动开发

Android插件化入门指南,程序员必看

android 程序员 移动开发

Android教程,享学androidvip

android 程序员 移动开发

Android开发者面试如何系统复习,Android小技巧

android 程序员 移动开发

从错误中学习

FunTester

学习 测试 bug 自学 FunTester

Android技术类校招面试题汇总:android享学课堂vip课程下载

android 程序员 移动开发

没想到!我在简历上写了“精通MySQL”,阿里面试官跟我死磕后就给我发了高薪offer

收到请回复

程序员 编程语言 后端

极客时间 - 架构实战营 - 模块一作业

秋夫人

架构实战营

Android最新实习面试经验总结,我就不信你还听不明白了

android 程序员 移动开发

卷王如何刷力扣

bigsai

数据结构 算法 刷题

Android开发谈,html5移动开发即学即用网盘

android 程序员 移动开发

架构实战-模块一

唐敏

架构实战营

android插件化和热修复区别,扔物线学堂

android 程序员 移动开发

android插件化开发指南,享学课堂课程怎么样

android 程序员 移动开发

android插件化资源冲突,享学课堂vip二期

android 程序员 移动开发

Android攒了一个月的面试题及解答,Android程序员必会

android 程序员 移动开发

Android开发面试技能介绍,动脑学院架构师vip视频

android 程序员 移动开发

Android开发面试题目,动脑学院vip

android 程序员 移动开发

Android最牛教材!kotlin入门教程百度网盘

android 程序员 移动开发

Android性能优化面试题集锦,架构师必备

android 程序员 移动开发

Android推送技术解析,Android开发工程师面试题

android 程序员 移动开发

【推荐】如何将枯燥的大数据呈现为可视化的图和动画?

云智慧AIOps社区

大数据 开源 大前端 数据可视化 大屏可视化

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