弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言
自从 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 的使用情况,以及生态系统的发展趋势。

接下来,将为大家一一介绍。
年轻的开发者更钟爱 Kotlin
超过 70% 的受访者是雇员,11% 是企业家和开发商。
他们主要从事技术工作,其次是金融、教育和数字代理。Kotlin 的应用领域中保险和政府最为保守。

超过一半的受访者表示其作为开发人员工作的时间不到 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。相比之下,有三分之一的受访学生将其用于工作和辅助项目。 也就是说,他们中有近一半的人表示打算在未来开始使用它。

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

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

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

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

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

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

对于 Kotlin 的一些新功能及特性,如协同程序(Coroutines)、KotlinC、DSL 等也只有少数的受访者才会使用,他们表示毕竟这些功能目前还不完善。
Kotlin 的未来
Kotlin 整体的发展速度还是让不少开发者为之兴奋。同时鉴于 JetBrains 和Google 的大力支持,以及开发者社区的热捧,我们也相信它会越来越流行。但如今主要的问题是,它在未来是否会成功地入主 Android 以外的应用?
如今 JetBrains 正在大肆推动 Kotlin 的多平台应用,它是否会得到大家的认可也仍未可知。但是想要它成为 Web、iOS 以及后端开发者新的标准,想必也还需要数年的时间来扩展。根据调查报告显示,越多越多的开发者迈出了 Kotlin 编程的第一步,也可以在面向对象、函数、脚本之间穿梭。这就足以说明,Kotlin 正在渗入到整个开发的生态系统中。
阅读更多
相信自己,没有做不到的,只有想不到的
在这里获得的不仅仅是技术!
弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言的更多相关文章
- 你还在把Java当成Android官方开发语言吗?Kotlin了解一下!
导语:2017年Google IO大会宣布使用Kotlin作为Android的官方开发语言,相比较与典型的面相对象的JAVA语言,Kotlin作为一种新式的函数式编程语言,也有人称之为Android平 ...
- KOTLIN开发语言文档(官方文档) -- 2.基本概念
网页链接:https://kotlinlang.org/docs/reference/basic-types.html 2. 基本概念 2.1. 基本类型 从可以在任何变量处理调用成员函数和属性 ...
- KOTLIN开发语言文档(官方文档) -- 入门
网页链接:https://kotlinlang.org/docs/reference/basic-syntax.html 1. 入门 1.1. 基本语法 1.1.1. 定义包 包说明应该在源 ...
- kotlin, 一种新的android平台一级开发语言
最近看到一则科技新闻, 大致内容是google将kotlin语言作为android应用开发的一级语言, 与java并驾齐驱, 这是一个开发界的大事件大新闻, 连google的亲儿子go语言也没有这种待 ...
- 如何看待 Kotlin 成为 Android 官方支持开发语言?
Google IO 2017宣布了 Kotlin 会成为 Android 官方开发语言.一时间朋友圈和Android圈被各种刷屏.当然我也顺势而为发布了一篇的文章<为什么我要改用Kotlin&g ...
- 如何看待 Kotlin 成为 Android 官方支持开发语言
Google IO 2017宣布了 Kotlin 会成为 Android 官方开发语言.一时间朋友圈和Android圈被各种刷屏.当然我也顺势而为发布了一篇的文章<为什么我要改用Kotlin&g ...
- AS负责人说不必用Kotlin重写,但OkHttp拿Kotlin重写了一遍,就发了OkHttp 4.0!
虽然 Android Studio 的负责人 Jeffery 已经澄清,只是 Kotlin-First 而不是 Kotlin-Must,并不需要将 App 用 Kotlin 重写一遍.但是 OkHtt ...
- 开发语言性能对比,C++、Java、Python、LUA、TCC
一直想做开发语言性能对比,刚好有时间都做了给大家参考一下, 编译类:C++和Java表现还不错 脚本类:TCC脚本动态运行C语言,性能比其他脚本快好多... 想玩TCC的同学下载测试包,TCC目录下修 ...
- Java在Web开发语言上败给了PHP
PHP的主要语言开发者之一.Zend公司的创始人之一Andi Gutmans最近在blog中直言不讳地批评了Java语言.他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,Java ...
随机推荐
- Docker(三)Docker是如何工作的
摘自 https://mp.weixin.qq.com/s/SsXIuDqeze_et8vWQ8fr3g 一.Docker Client 也称为Docker客户端.其实就是Docker提供命令行界面工 ...
- 第25月第15天 udacity cs253
1.cs253 https://classroom.udacity.com/courses/cs253 webapp2 Install WebOb, Paste and webapp2¶ We nee ...
- 第25月第3天 Mxshop项目记录01
1.项目 https://github.com/mtianyan/VueDjangoFrameWorkShop virtualenv命令 virtualenv . virtualenv -p /ana ...
- day 10 - 1 函数进阶
函数进阶 命名空间和作用域 命名空间 命名空间 有三种内置命名空间 —— python解释器 就是python解释器一启动就可以使用的名字存储在内置命名空间中 内置的名字在启动解释器的时候被加载进内存 ...
- 高性能缓存Caffeine
1. Caffeine 为我们提供了三种填充策略:手动.同步和异步 2. Caffeine提供三类驱逐策略:基于大小(size-based),基于时间(time-based)和基于引用(referen ...
- STL之partition学习
顺便存一下numeric函数的使用方法吧,感觉用处不大. https://blog.csdn.net/baishuo8/article/details/84073565 partition函数,将元素 ...
- python3.7中asyncio的具体实现
讲讲我在使用python异步IO语法时踩过的坑 简单介绍异步IO的原理 以及利用最新语法糖实现异步IO的步骤, 然后给出实现异步的不同例子 网上找了很多python的asyncio示例.很多都是用 # ...
- SQL操作json类型数据的函数
MySQL5.7之后对json数据格式进行了函数支持 Json_contains(字段名, '值') 1.表中json格式的某个字段 2.json里的某个键值 Json_search(字段名, 'on ...
- ZKClient操作zookeeper
前面简单研究了curator的使用,下面简单研究zkclient的使用. 1.创建连接 private static final String CONNECT_ADDR = "127.0.0 ...
- 老师博客copy
新闻 管理 Py西游攻关之基础数据类型 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频 ...