自从 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. 二、linux IO 编程---系统调用和POSIX标准和标准IO

    2.1 系统调用 2.1.1 概念 所谓系统调用(system call)是指曹错系统提供给用户程序的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的特殊服务. 应用程序可以 ...

  2. luogu 3538/bzoj 2795 Poi2008 哈希+质数结论

    题意:给定一个子串,询问一些子区间内的最短循环节(循环节是越短条件约束越多) 开始一看那就哈希处理然后暴力枚举循环节,然后按照循环节长度暴力向后比较,本地测试40,洛谷60 #include<b ...

  3. 关于Java 实现抽象类的抽象方法的特性的利用---面向切面

    今天看工作看代码突然有了以下设想: /** * Created by zq on 2017/5/25. * 抽象类 */ public abstract class AbstractC { publi ...

  4. Debian Security Advisory(Debian安全报告) DSA-4411-1 firefox-esr security update

    Debian Security Advisory(Debian安全报告) DSA-4411-1  firefox-esr security update Package :firefox-esr CV ...

  5. PPT制作

    0.[整体风格]整体风格统一 界面排版 0.1 字体大小: 0.2 字体颜色: 0.3 字体的种类统一(不是指只取一种字体)) 1.[表达]结构化表达: 2.[取色]取色风格统一: 技巧:主色不超过三 ...

  6. android 内存回收及怎样避免内存泄露

    http://blog.vunso.com/201307/android%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6%E6%9C%BA%E5%88%B6%E5%8F%8A% ...

  7. 单片机AT和STC区别

    http://www.21ic.com/jichuzhishi/datasheet/AT89C51/data/192017.html

  8. 页面跳转、底部tabs切换页面

    1.页面跳转 import { NavController } from 'ionic-angular'; constructor(public navCtrl: NavController) { } ...

  9. launch 文件的写法

    1. launch文件的写法 ❀标签          ☺<node> 启动一个节点          ☺ <param> 设置参数服务器的参数          ☺ < ...

  10. P4843 清理雪道

    题目地址:P4843 清理雪道 上下界网络流 无源汇上下界可行流 给定 \(n\) 个点, \(m\) 条边的网络,求一个可行解,使得边 \((u,v)\) 的流量介于 \([B(u,v),C(u,v ...