Kotlin生態調查結果出爐:超過6成的開發者用過Kotlin了

前端之巔2018-07-19 23:35:56

作者|Pusher
譯者|無明
編輯|覃雲
Kotlin 從 2011 年低調問世,在短短几年間,如沖天火箭般流行起來。一年前,谷歌宣佈將 Kotlin 指定為 Android 官方編程語言;來自 Stack Overflow 的一項問卷調查顯示,超過 10 萬名受調者表示 Kotlin 是他們的第二大編程語言。

英國軟件公司 Pusher 對此感到非常好奇,究竟 Kotlin 有什麼特別的地方,讓如此著迷。於是,Pusher 公司發起了一項針對 Kotlin 生態系統的問卷調查,從 2018 年 1 月份至 3 月份,為期三個月,受調者達到 2744 名。以下是這份問卷調查的結果及其簡要分析。

年輕技術從業者更喜歡 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%)

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 作為他們的第一開發語言。

JetBrains 的努力如願以償

超過 60% 的工作者在他們工作的項目中使用 Kotlin。相反,只有三分之一的學生在他們的工作和個人項目中使用 Kotlin。還有將近一半的人表示會在未來使用 Kotlin。

官方網站是目前最受歡迎的 Kotlin 學習去處。不過,學生更喜歡 YouTube Udemy 的在線教程,以及各種技術大會和演示。這些網站似乎會在接下來的幾年提供視頻流和實時代碼服務,就像 Twitch 那樣。

有很大一部分開發者在他們的工作項目和個人項目中使用 Kotlin。不過,在個人項目中顯然會用得更多,因為個人項目規模更小,更容易進行轉換,也更方便進行實驗。

Android 是 Kotlin 的主要使用平臺。大量的專業開發者和學生使用 Kotlin 開發 Android,而在後端,使用 Kotlin 的非常有經驗的開發者。

蘿蔔青菜各有所愛

每個受夠了 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

 課程推薦

邱嶽,人稱“二爺”,無碼科技的產品經理,也是公眾號“二爺鑑書”的作者,早年寫過程序,後轉做產品經理,就職過阿里巴巴、丁香園,打造出了千萬用戶的小程序。

在這個專欄中,他將自己從事產品經理近十年的所見所聞、所思所想毫無保留地寫出來,他希望將自己的經驗和思考總結出來,幫助更多的人建立產品認知、構築產品思維。使大家能跳出自身固有的思維框架,重新審視自己的工作,從而獲得成長。

閱讀原文

TAGS: