弃 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 ...
随机推荐
- Javaweb学习笔记——(十一)——————JSP、会话跟踪、Cookie、HttpSession
JSP1.什么是JSP jsp即java server pages,它是Javaweb的动态资源. jsp = html + java脚本 + jsp动态标签(包含EL表达式)2.JSP中java脚本 ...
- [译]ES6特性
原文 作用域 使用let/const替代var. var有什么错? var说明的变量会产生作用于提升的概念. ES5: var x = 'outer'; function test(inner) { ...
- 深度学习 ——style reconstruction
多层神经网络的实质就是为了找出更复杂,更内在的features...图像的style, how to describe, impossible! 但是人眼却可以分辨. (参考论文 A Neural a ...
- Frameset 框架
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.c ...
- Chrome实用技巧集锦
1. 截取整个网页内容: 步骤:(F12 或 Ctrl Shift I 进入开发者模式) ——> Ctrl Shift P 弹出输入框 ——> 输入框中输入:Captrue ful ...
- Git学习之连接GitHub远程仓库
在看此教程之前电脑上应该已安装好git,并且配置好基本信息,Git新手请从头开始. 第1步:创建SSH Key 在用户主目录下(Mac系统是在用户主目录下,可通过命令ll -a查看,Windows下自 ...
- easyui 进阶之表单校验、自定义校验
前言 easyui是一种基于jQuery的用户界面插件集合,它为创建现代化,互动,JavaScript应用程序,提供必要的功能,完美支持HTML5网页的完整框架,节省网页开发的时间和规模.非常的简单易 ...
- Hbase思维导图之架构
- window.name
name 设置或返回存放窗口的名称的字符串.该名称是在 open()方法创建窗口时指定的或者使用一个<frame>标记的name属性指定的. 窗口的名称可用作一个<a>或者&l ...
- Java8新特性(待更新...)
一.Lambda表达式 二.接口的默认方法与静态方法 三.方法引用 四.重复注解 五.扩展注解的支持 六.Optional 七.Stream 八.Date/Time API (JSR 310) 九.J ...