自从 2011 年发布以来,Kotlin 凭借强大的功能在开发者中的欢迎程度与日俱增。且在一年前,Google 宣布 Kotlin 正式成为 Android 官方开发语言,由此引发了从 Java 迁移到 Kotlin 的一股热潮,根据 StackOverflow 上超过 10 万名受访者的调查显示,Kotlin 成为第二大受欢迎的语言,第一名是 Mozilla 开发的系统编程语言 Rust 。

但是随着技术的逐渐深入,不少开发者也发出从 Java 到 Kotlin,再到 Java 的无奈感叹,那么 Kotlin 现状究竟如何?

对此,国外一家名为 Pusher 的公司在今年 1 月至 3 月期间基于 Kotlin 对世界范围内的 2744 名 IT 人员进行了深入地调查,并于昨日正式发布了《The State of Kotlin 2018》报告,分享了如今 Kotlin 的使用情况,以及生态系统的发展趋势。

image.png

接下来,将为大家一一介绍。

年轻的开发者更钟爱 Kotlin

超过 70% 的受访者是雇员,11% 是企业家和开发商。

他们主要从事技术工作,其次是金融、教育和数字代理。Kotlin 的应用领域中保险和政府最为保守。

image.png

超过一半的受访者表示其作为开发人员工作的时间不到 5 年,2-5 年工作经验的占 33.9%,1-2 年的占 15.2%。本报告受访者的工作经验比参加 StackOverflow 调查的开发者要少一些。然而,“开发者数量每 5 年翻一番”的传统理念依旧存在,未来 Kotlin 的开发者只会越来越多。

 

企业中使用 Kotlin 的开发者人数差异较大,大约三分之一的人表示,他们公司里 2-5 人使用 Kotlin 进行开发。这大致与开发 Android App 的团队规模相匹配。

Kotlin 使用率迅猛增长,但不是开发者的首选语言

Kotlin 的增长率每年都在翻倍,到了 2015 年,其使用量首次出现大幅飙升,从上一年的 1.4% 激增到 7.7%。对于增长的原因,想必和同年间 Android 大神 Jake Wharton 发布的文档(https://docs.google.com/document/d/1ReS3ep-hjxWA8kZi0YqDbEhCqTt29hG8P44aA9W0DM8)有关,该文档旨在主张使用 Kotlin 进行开发,并创建了一些流行的 Android 开源库。这就导致了很多的 Android 开发者效仿,并使用了 Kotlin 开始创建项目。

而 2017 年 5 月,Google 宣布 Kotlin 正式支持 Android,由此看出,大量 Android 开发者开始使用 Kotlin,占比达到了 46.8%。这其中不乏有因 Google 品牌吸引而投身于 Kotlin 开发的学生,据调查显示,早期,Kotlin 主要由经验丰富的专业开发者使用,如今大批年轻的开发者及学生开始涌入。

 

不过,目前 Java 仍占主要地位,同时也有很多开发者使用其他的编程语言,诸如 JavaScript、Python、Swift、C# 等等,因此大多数的开发者并没有将 Kotlin 作为其第一编程语言。

 

Kotlin 更多的是用于个人项目,而非企业项目

受访者中,有超过 60% 的开发者正在工作项目中使用 Kotlin。相比之下,有三分之一的受访学生将其用于工作和辅助项目。 也就是说,他们中有近一半的人表示打算在未来开始使用它。

image.png

据调查显示,官方网站是 Kotlin 入门的首选资源,其次不少开发者通过 YouTube 和 Udemy 的课程、线上大会等方式进行学习。

image.png

Kotlin 更多的是被用于私人项目,而非工作项目中。

image.png

Android 是 Kotlin 的杀手级应用。当涉及到后端应用程序时,经验丰富的开发者才会使用 Kotlin,而新手和学生一般不会选择。

image.png

最爱的特性

对于每位 Android 开发者来说,只要使用过 Java 的 NullPointerException 的特性都会喜欢上 Kotlin 的安全性能,其次分别是扩展函数、Java 的互操作性。有 77% 的受访者表示,Kotlin 扩展功能往往使代码更具可读性,尤其是在函数编程环境中或创建 DSL 时。

image.png

此外,超过 87% 的受访者将现有的 Java 代码转换成 Kotlin 代码。不过也有超过四分之一的开发者在将 Java 迁移到 Kotlin 之后因技术以及企业等原因后悔了。其中技术原因主要包括 Kotlin 的反射和生成代码工具,以及以下等原因:

image.png

跨平台 Kotlin 正在复苏,但速度较为缓慢。只有约四分之一的受访者提到他们运用了一些跨平台支持,大多数选择 Kotlin / Native,其次是 KotlinJS。

 

对于 Kotlin 的一些新功能及特性,如协同程序(Coroutines)、KotlinC、DSL 等也只有少数的受访者才会使用,他们表示毕竟这些功能目前还不完善。

Kotlin 的未来

Kotlin 整体的发展速度还是让不少开发者为之兴奋。同时鉴于 JetBrains 和Google 的大力支持,以及开发者社区的热捧,我们也相信它会越来越流行。但如今主要的问题是,它在未来是否会成功地入主 Android 以外的应用?

如今 JetBrains 正在大肆推动 Kotlin 的多平台应用,它是否会得到大家的认可也仍未可知。但是想要它成为 Web、iOS 以及后端开发者新的标准,想必也还需要数年的时间来扩展。根据调查报告显示,越多越多的开发者迈出了 Kotlin 编程的第一步,也可以在面向对象、函数、脚本之间穿梭。这就足以说明,Kotlin 正在渗入到整个开发的生态系统中。

阅读更多

Android 目前最稳定和高效的UI适配方案

很值得收藏的安卓开源控件库

不懂技术的人不要对懂技术的人说这很容易实现

Java高级进阶,你必须要掌握这些数据结构

相信自己,没有做不到的,只有想不到的

在这里获得的不仅仅是技术!

 

弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言的更多相关文章

  1. 你还在把Java当成Android官方开发语言吗?Kotlin了解一下!

    导语:2017年Google IO大会宣布使用Kotlin作为Android的官方开发语言,相比较与典型的面相对象的JAVA语言,Kotlin作为一种新式的函数式编程语言,也有人称之为Android平 ...

  2. KOTLIN开发语言文档(官方文档) -- 2.基本概念

    网页链接:https://kotlinlang.org/docs/reference/basic-types.html 2.   基本概念 2.1.  基本类型 从可以在任何变量处理调用成员函数和属性 ...

  3. KOTLIN开发语言文档(官方文档) -- 入门

    网页链接:https://kotlinlang.org/docs/reference/basic-syntax.html 1.   入门 1.1.  基本语法 1.1.1.   定义包 包说明应该在源 ...

  4. kotlin, 一种新的android平台一级开发语言

    最近看到一则科技新闻, 大致内容是google将kotlin语言作为android应用开发的一级语言, 与java并驾齐驱, 这是一个开发界的大事件大新闻, 连google的亲儿子go语言也没有这种待 ...

  5. 如何看待 Kotlin 成为 Android 官方支持开发语言?

    Google IO 2017宣布了 Kotlin 会成为 Android 官方开发语言.一时间朋友圈和Android圈被各种刷屏.当然我也顺势而为发布了一篇的文章<为什么我要改用Kotlin&g ...

  6. 如何看待 Kotlin 成为 Android 官方支持开发语言

    Google IO 2017宣布了 Kotlin 会成为 Android 官方开发语言.一时间朋友圈和Android圈被各种刷屏.当然我也顺势而为发布了一篇的文章<为什么我要改用Kotlin&g ...

  7. AS负责人说不必用Kotlin重写,但OkHttp拿Kotlin重写了一遍,就发了OkHttp 4.0!

    虽然 Android Studio 的负责人 Jeffery 已经澄清,只是 Kotlin-First 而不是 Kotlin-Must,并不需要将 App 用 Kotlin 重写一遍.但是 OkHtt ...

  8. 开发语言性能对比,C++、Java、Python、LUA、TCC

    一直想做开发语言性能对比,刚好有时间都做了给大家参考一下, 编译类:C++和Java表现还不错 脚本类:TCC脚本动态运行C语言,性能比其他脚本快好多... 想玩TCC的同学下载测试包,TCC目录下修 ...

  9. Java在Web开发语言上败给了PHP

    PHP的主要语言开发者之一.Zend公司的创始人之一Andi Gutmans最近在blog中直言不讳地批评了Java语言.他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,Java ...

随机推荐

  1. ASP.NET MVC之视图传参到控制器的几种形式

    1. 传递数组 $(function () { var value = ["C#", "JAVA", "PHP"]; $("inp ...

  2. HTTP 返回状态码

    一.HTTP 超文本传输协议 HTTP 是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议. 一个HTTP "客户端"是一个应用程 ...

  3. ArrayList的底层实现

    package zy809; public class myArrayList { /** 存放元素 */ private Object[] data;// 创建一个数组引用. /** 元素的个数 * ...

  4. ue4 蓝图方法备份

    normalized 标准化 向量标准化 +- 1,1,1 内的值 角度标准化 +-180内的值 delta A-B (输出时roll在后面)  角度相减 interp 插值运算 (做平滑移动常用)  ...

  5. luogu P3240 [HNOI2015]实验比较

    传送门 首先根据题目条件,题目中如果是=的点可以缩起来,然后\(a<b\)连边\(a\rightarrow b\),而且所有点入度为最多1,那么判掉有环的不合法情况,题目中的依赖关系就是一颗外向 ...

  6. 第20月第29天 cocoa抽象工厂 cocoapods组件化 cocoapods升级

    1. 在 Cocoa Touch 框架中,类簇是抽象工厂模式在 iOS 下的一种实现,以 NSArray 举例,将原有的 alloc+init 拆开写: id obj1 = [NSArray allo ...

  7. Python 中的比较:is 与 ==

    转载: https://www.cnblogs.com/kiko0o0/p/8135184.html 在 Python 中会用到对象之间比较,可以用 ==,也可以用 is .但是它们的区别是什么呢? ...

  8. oracle查询语句 select a||','||b||','||c from table where a in('m','n')

    查询table表中 字段a = m 或 n 时,a列,b列,c列的值,并且这三列之间用 ","(逗号)分割. 追问:连接符的作用呢?就是显示的时候链接abc和中间的逗号么?追答:| ...

  9. nodejs+express+mongodb简单的例子

    简单的介绍下node+express+mongodb这三个东西.node:是运行在服务器端的程序语言,表面上看过去就是javascript一样的东西,但是呢,确实就是服务器语言,个人觉得在一定层次上比 ...

  10. 安装mongo php拓展

    下载php_mongo.dll文件 下载地址:https://s3.amazonaws.com/drivers.mongodb.org/php/index.html(注意对应版本及是否线程安全)需要注 ...