本文轉至 《Kotlin 官網大變樣?這是要幹啥?》html
Kotlin 官網此次更新能夠算是歷史上最大的一次了,跨平臺、數據科學等內容也搬到了最前面。前端
最近有小夥伴提醒我,Kotlin 官網更新了,我打開一看直接嚇尿: git
這是要幹啥?我據說過的沒據說過的您這是都要承包嗎?最有意思的是竟然把 Android 放到了最後,hmmm,Kotlin 開發者裏面搞 Android 的應該是最多的吧?這麼不受待見?github
因此我有個大膽的想法,Kotlin 團隊確定以爲 Android 大軍切換 Kotlin 指日可待,基本上穩穩的,因此過河拆橋:Android 已經再也不是 Kotlin 惟一的大腿啦,大家看看,最前面的是移動端跨平臺,原來谷爸爸的大腿剛捂熱乎,就又抱上了果爸爸,真是不得了哇:面試
其實很早以前咱們就一直在聊到 Kotlin 2019 年的重心必定在 Native 上,當時以爲多是盯上了 5G 時代的物聯網的機會?不過一年過去了,5G 手機我還沒用上,這不小米 10 剛發佈,正琢磨要不要換個呢,嵌入式領域 C 稱霸天下哪裏會那麼快換代,再說還有 Go 和 Rust 虎視眈眈,哪兒有 Kotlin 什麼事兒。npm
不過從 Android 起家的 Kotlin 橫向切入 iOS 這個路子真的是很合適,用戶羣體都不用怎麼變,還讓過去不會 iOS 的 Android 開發者有了更多更容易的機會擴展本身的技術棧,便可以擴大本身的影響力,又給開發者帶來福利,真是共贏 666。編程
固然,這個移動端跨平臺並非什麼特別新鮮的事兒,畢竟開源項目嘛,沒事兒刷刷 Kotlin 的 Slack,啥都能提早知道。並且自己 Kotlin 跨平臺共享代碼從 1.2 剛開始公測就理論上包含了 Kotlin-Jvm@Android 和 Kotlin-Native@iOS 的代碼共享能力,因此咱們彷佛不該該意外,我只是想說 JetBrains 竟然把移動端跨平臺專門上升到了這麼高的優先級,還專門作了 Kotlin Native 與 Objective-C & Swift 的互調用的支持,真是任性~~架構
若是過一段時間 Dukat 這個項目逐漸成熟,Kotlin-Js 的編譯工具也進一步完善,特別是對 npm 依賴的管理能更加靈活(目前 Kotlin-js 的 Gradle 依賴當中不會自動攜帶 npm 依賴這個讓人很是難受),JavaScript 常見的框架都有了本身的 Kotlin 接口聲明,那時候我估計寫到最前面的也許還會發生一些變化,那時候也許叫 「Kotlin for 大前端」?框架
說到這裏有人擔憂 Kotlin 這是否是在跟 Flutter 叫板。顯然不是嘛,Kotlin 跨平臺一直都聲稱本身只是爲了邏輯代碼的共享,UI 你們仍是用原生的就好啦。因而乎 Android 原來該用 ConstraintLayout 你就用你的 XML 佈局,iOS 呢就仍是用你的 storyboard。異步
Flutter 搶的是 UI 的飯碗,UI 層跨平臺的問題解決了,有人就說咱們底層的邏輯也選一套跨平臺的方案好很差?這要是放到幾年前,怕是沒有別的選擇了,C++ 是最好的語言;而如今,你能夠選擇 Kotlin,最爲神奇的是 Kotlin 的跨平臺和 C++ 的機制很是不一樣,它在 Android 上使用 Kotlin-Jvm,iOS 上則使用 Kotlin-Native。你要是非想在 Android 上使用 JNI 的話,Kotlin-Native 也已經支持了絕大多數 Android 的 CPU 架構。因此很早就有人發文章報告 Flutter + Kotlin-Native 實現移動端跨平臺開發的優秀體驗,因此 Flutter 該學就學,不矛盾。
並且它倆的這基友關係嘛。。。依我看,這 Logo 就已經說明一切了。。。
還有一個比較引人注目的就是 Data science 了吧。畢竟 Python 由於這個都火的不得了了,過去的一年裏我已經鼓動咱們組好幾個小夥伴上手 Python,要恰飯的嘛,藝多不壓身,省得錯過一些項目的機會。如今好了,Kotlin 也能搞科學計算了,目測大概的切入思路暫時仍是依託於強大的 Jvm,Java 能用的框架 Kotlin 天然能用,Java 不能直接用的,例如 Python numpy,能夠 JNI 直接搞一個封裝 kotlin-numpy;等 Kotlin Native 翅膀硬了以後就更省事兒了,直接跟 C 玩去,連 Jvm 都用不着了。這麼發展着,最後也許是個人固然是個人,你的也是個人。。。
忘了說了,如今已經有了 Jupyter 的 Kotlin 內核,因此之前在 Jupyter Notebook 裏用 Python 寫的代碼也能夠用 Kotlin 寫了,貼一張官網的效果圖:
很美是吧,以前 KotlinConf 2019 期間官博就發了一篇文章介紹這個能力,也能夠參考一下:Making Kotlin Ready for Data Science 原文 中文翻譯。
順便提一句,調用 GPU 其實也是 IO 操做,我看了幾個 cuda 的程序都頗有意思,要麼是阻塞調用,要麼就是異步調用以後在主流程裏死循環等待結果返回。這彷佛與咱們的 Socket 讀寫相似,異步的 API 可能在大規模調用時性能更好,但代碼編寫起來更加複雜。前幾天讀到一篇論文講的就是如何使用 C++ 的協程來下降 GPU 編程的複雜度(Integrating GPGPU computations with CPU coroutines in C++),隨着 Kotlin Native 的逐漸成熟穩定,咱們能夠直接經過 C 接口編寫 GPU 相關程序,Kotlin 協程也許能夠爲 GPU 編程帶來必定的便利。
這麼看來,預計在 2020年春天發佈的 Kotlin 1.4 的形勢也比較明朗了,正如 Kotlin 之父 Andrey 說的,這個版本沒有什麼太多的新特性。由於做爲一門語言自己,Kotlin 已經比較成熟,如今最應當關注的是開發體驗,開發效率,穩定性,易用性以及應用場景等等語言生態的內容。
我以前還比較擔憂 Kotlin Multiplatform 和 Kotlin Native 會不會藉此機會正式發佈,從官網的此次改動來看,這樣的擔憂應該是多餘的了。咱們來回顧一下過去 Kotlin 的重要版本的發佈時間:
多數狀況下 Kotlin 的大版本都是保持一年左右一個的(1.2 這個版本估計是趁着熱度努力衝了一波 KPI,畢竟 2017 年 Kotlin 出名了),小版本大概兩個月一個,因此通常小版本到 1.x.7 的時候也就是下一個大版本發佈的時間。如今 1.3.70 已經 EAP 了一個多月了,大家懂我意思吧。
若是你們想要快速上手 Kotlin 或者想要全面深刻地學習 Kotlin 的相關知識,能夠關注我基於 Kotlin 1.3.50 全新制做的新課,課程初版曾幫助3000多名同窗掌握 Kotlin,此次更新迴歸內容更精彩:
掃描二維碼或者點擊連接《Kotlin 入門到精通》便可進入課程啦!
想要找到好 Offer、想要實現技術進階的迷茫中的 Android 工程師們,推薦你們關注下個人新課《破解Android高級面試》,這門課涉及內容均非淺嘗輒止,目前已經有700+同窗在學習,你還在等什麼(*≧∪≦):
掃描二維碼或者點擊連接《破解Android高級面試》便可進入課程啦!
中文官網:www.kotlincn.net/
中文官方博客:www.kotliner.cn/
公衆號:Kotlin
知乎專欄:Kotlin
CSDN:Kotlin中文社區
掘金:Kotlin中文社區
簡書:Kotlin中文社區