Kotlin 和 Flutter 對於開發者究竟意味著什麼?
作者 | 段建華
責編 | 唐小引
出品 | CSDN(ID:CSDNnews)
寫在前面
【CSDN 編者按】近些年來,程式語言流行度的變化其實不大,在TIOBE 程式語言排行榜上,Java、C、C++ 固若金山,也就只有 Python 會攻城略地成為第四。在這 TOP3 之中,Java 以其非常優秀的普適性,可以用於前後端開發,再加上非常成熟的 JVM 虛擬機器以及整個 Java 生態,讓 Java 這個老大哥 常年雄踞 TOP1,在 CSDN 的 Java 相關的文章之中,常有使用者留言調侃“Java:你們隨便爭,反正我 Java 是第一”也可窺見一二。
而從兩年前 Google 正式宣佈 Kotlin 成為 Android 官方支援的語言開始,對於“Kotlin 即將取代 Java”的討論便甚囂塵上從未停歇。彼時,Kotlin 這個誕生於 2011 年的小夥子讓已經使用了 Java 多年的 Android 開發者們有了點不可言說的滋味。 同時,在過去的數年之間,伴隨著 Oracle 與 Google 紛爭不止,業界“Oracle 要玩死 Java”之聲亦是不絕於耳。
Java 8 更新,Oracle 將“刪除”按鈕設定成了高亮
2017 年,面對著 Kotlin 這個 Android 開發新貴,Realm 直接給出了一個預測,就是“到 2018 年底,在 Android 開發領域,Kotlin 將超越 Java,成為開發 Android 應用的第一語言”。
如今,時間上雖然稍晚了幾個月,但這份預測卻成為了現實。
那麼,當今天 Google I/O 大會上,Kotlin 取代 Java 成為 Android App 開發的首選語言之時,對於我們移動開發者而言,究竟意味著什麼?同時,當 Flutter 帶著一統 App、Web、桌面及嵌入式開發之勢而來之時,移動開發者該怎麼辦?對此, CSDN 特別邀請在國內 Android 圈子中較早研究 Kotlin 的段建華(@技術小黑屋)來解答目前開發者們最為關心的問題:
為什麼 Google 會越過 Java 讓 Kotlin First?
採用 Kotlin 與 Oracle 版權有關係麼?
其實可能沒有關係。
這場起自 2010 年的訴訟案,幾經反轉,曾一度驚動美國最高法院,從最初的專利和版權侵權到最後聚焦在 Google 是否合理使用了 Java 的 API。但是 Oracle 自始至終都不是在控告 Google 允許開發者使用 Java 來開發應用程式。
而真正讓 Kotlin 被 Google 採用的原因其實是 Kotlin 自身的優點,譬如安全、簡潔、實用,以及與 Java 可互動良好等特點。除此之外,Kotlin 在相對很早的時候就在國外的知名公司用來開發 Android App,有著不錯的氛圍和環境,這也為其裂變發展貢獻了不小的功勞。
Kotlin First 對於 Android 開發者究竟意味著什麼?
首先對於 Google 來說,應該意味著更進一步地放棄 Java。這會導致更多的 Android 庫出現對應的 Kotlin 實現,甚至可能是隻有 Kotlin 版本,Android Studio IDE 也會出現更多的傾向於 Kotlin 的特性和支援等。 結果可能會是 App 開發者進一步向 Kotlin 靠攏,而 Java 則相應地被進一步孤立。
其次,對於 Android 開發者來說,當本屆 I/O 大會 Google 宣佈 Kotlin 作為 Android 首選開發語言那一刻,再次證明我們使用 Kotlin 是正確的。內心都是無比 Exciting,充盈著一種滿滿的被認可感,而這勢必會讓更多的 Android 開發者投向 Kotlin 的懷抱。
同時,至關重要的是體現在業務上,對於管理者來說,會有更大的信心和更強的動力去推動團隊完成從 Java 到 Kotlin 的轉變。
事實上,當前在 Android 研發的招聘中,大部分 招聘 JD 都會包含希望求職者具備 Kotlin 編碼能力的描述,而面試者的簡歷也會提到自己學習或者專案應用 Kotlin 等內容。
並且,目前筆者從各種渠道瞭解到,大部分的公司都已經使用 Kotlin 作為首選開發語言,而且積極效果反饋明顯。
看完移動端,我們再看服務端,不同於 Java 在後端的良好表現。儘管就 Kotlin 來說,除了前文所述的優點之外, 協程是一大吸引,但 Kotlin 在中後臺開發人員中的流行度可能並不會像在 Android 上這麼順利,究其原因,主要還是:
-
缺乏官方權威或大公司背書來提振威望;
-
相關的框架需要進一步豐富;
CSDN 編者注:對於這一點,在 CSDN《 2018 - 2019 中國開發者調查報告 》中,擁有十幾年移動開發經驗的輕芒聯合創始人範懷宇對此表示:Java 的 Web 框架經過千錘百煉已經可以支撐足夠大的併發,JVM 經過長年優化效能表現也非常出眾,而 Java 的各類庫、統一的程式設計模型、豐富的人才儲備,可以滿足各種場景的訴求。
-
相應的中文社群和氛圍需要增強。
但無論如何,Kotlin 的確稱得上是 Java 程式設計師近在咫尺的小確幸,你需要做的就是抓住它,不要錯過。
Google 同推 Flutter 和 Kotlin,那麼移動開發者該如何做選擇?
我們再來看 Google 在移動端另一重推的框架,Flutter 自問世伊始便被寄予厚望,從開始的支援 Android 和 iOS 開發到現在的全平臺(Mobile、Desktop、Web、Embedded),幾近於真正地實現了數年來程式設計師夢寐以求的“Write once, run anywhere”的願景。
因此相對而言,Flutter 顯得更加有誘惑力,因為它是一個跨平臺開發的解決方案,我想這也是大多數人給出的答案。
但是也有很多原因會導致你無法選用 Flutter,如下不完全列舉:
-
Flutter 需要使用 Dart 語言,沒有第二語言。Dart 令人詬病的方面也不少;
-
對現有技術投入較多導致沉默成本過大,甚至是難以負擔;
-
保守主義,避免過早地對某項技術投入資源;
-
領域限制,Flutter 無法滿足要求。
Kotlin 的被欽定可以解讀為 Android 開始逐漸放棄 Java 語言這個開發依賴,而 Flutter 的推出可以被理解成 Google 開始放棄 Android,迎接新作業系統 Google Fuchsia 的準備。
出於綜合考慮且必須二選一的情況下, 建議你選擇 Flutter ,但是如果你有興趣見識一種比 Java 更安全,更簡潔,更實用,更優雅的語言的話,我也推薦你學一學 Kotlin。
Flutter 很有前途,但 Kotlin 也會讓你欲罷不能,這確實是一件麻煩事。
基於同時,對於我們所有技術人來說,一個非常頭疼且不由得恐慌的問題,那便是 如何應對日新月異的技術 ?
這可能是越來越多的以工程為主的開發者面臨的問題,因為今天有 Kotlin 和 Flutter,明天或許就會冒出來 Gotlin、Hlutter 等新的技術。
日新月異層出不窮,不斷追求學習並不現實,反而有可能把自己搞的很累,甚至是產生負面效果。新技術固然可以學習,但是作為技術人,獲得完善的素養顯得更加意義深遠。
筆者認為一個技術人員想要具備完善的素養,需要朝著這些方向努力:
-
夯實基礎;
-
學好英語;
-
提升學習能力;
-
堅持總結歸納問題的習慣;
-
增強分析問題,解決問題的能力。
一個技術人員能夠走多遠,靠的不是會某種技術,而是完善以上高質量的素養。
作者簡介:
段建華,技術小黑屋(https://droidyue.com)博主, 寺庫奢侈品資深 Android 工程師,前 Flipboard 工程師。自 2016 年開始接觸 Kotlin,參與多個專案並實施引入 Kotlin 作為開發語言,撰寫了多篇關於 Kotlin 的深度文章。
【責編互動時間】
Hello 親愛的開發者朋友們
如果你有優質的技術實踐及討論文章
歡迎通過下方方式與我聯絡
向中國千萬開發者分享你的真知灼見喲
熱 文推 薦
☞ 馬雲:愛情不是程式,婚姻不是演算法;劉強東要提高京東員工淨收入;IntelliJ IDEA 新版釋出!| 極客頭條
☞ 獨家! 幣安被盜原因找到了! 7074枚比特幣竟是這樣丟掉的
☞ 補償100萬?Oracle裁900+程式設計師,新方案已出!
點選閱讀原文,輸入關鍵詞,即可搜尋您想要的 CSDN 文章。
你點的每個“在看”,我都認真當成了喜歡