如何看待 Google 宣布 Kotlin 正式成為 Android 的開發語言?


一大批具有一個月開發經驗的Kotlin自學者正在申請知乎Live教你開發android的路上;

一大批打算轉行計算機,剛學了kotlin入門語法就準備精通android開發的文科正在準備滋滋送錢。


google 從 棄用 eclipse 啟用 androidstudio 開始就是下定了離開 oracle 投奔 jb 的決心了(as是狗狗跟 jb 合作開發的)。而 kotlin 意味著 google 與 jb 的合作又進了一步,看來狗狗跟 jb 合作挺愉快的,後續應該會繼續跟 jb 合作把 kotlin 推廣下去。

這個與蘋果搞 swift 性質不同, objc 本身是開源的,蘋果有掌控力,所以蘋果根本不會有強烈的替換掉 objc 的壓力跟動力,你用不用 swift 對蘋果來說其實無所謂。

而對 java 來說 google 沒有掌控力還隨時有吃官司的風險。 google 有強烈的逃離 java 的動力跟壓力,所以會一直試圖尋找 java 的替代方案,因而 google 如果找到了合適的語言就很可能是真的想用來替代 java,而不僅僅只是想共存。


瀉藥。剛好今年有幸現場見證這一幕,當宣布這個消息的時候現場呼聲超級嗨,我也一直很早看好 Kotlin 的未來,只是這麼快就被 Google 認可還是很驚訝的,消息一出,我公號上很多讀者都在問這個問題,於是寫了一篇文章解惑,我就把關鍵部分貼在這裡吧,以下是原文:

首先,毫無疑問,Kotlin 一定是 Android 開發的未來,即使在之前 Google 沒認定 Kotlin 的時候,我都這麼認為,現在 Kotlin 轉正了更沒疑問。Kotlin 語言擁有雄厚的背景,有著新時代語言的各種新特性,寫過 Kotlin 你真的再也不想寫 Java 了,Java 有著沉重的歷史包袱,想要完全靠自身脫胎換骨幾乎不可能,而 Kotlin 除了語言上的優勢之外,JetBrains 比較正確的一個決策是,它完全兼容 Java,允許你的項目同時支持 Java 和 Kotlin 語言,這就留給開發者足夠的時間去把項目過度到 Kotlin,哪怕你真的很懶,不想對老舊代碼做處理,只想新寫的代碼用 Kotlin,那也沒任何問題。

雖然 Kotlin 還不成熟,還在慢慢優化更新中,但是這不會阻礙它是 Android 開發者未來的趨勢,就如當初的 Android Studio,在它剛出來的時候,問題更多,有多少人質疑它是垃圾,但是我堅定的認為 AS 一定是 Android開發者 的未來,事實證明,在 Google 的不斷完善之下,它已經完全普及,即使現在它還有一些這樣那樣的問題,但是也比你用 Eclipse 開發效率高的多。

其次,雖然 Kotlin 是 Android 開發的未來,但是它沒法改變移動時代已經走下坡路的趨勢,它只能加快你的開發效率,讓你代碼寫的更爽,所以,我看到有些學習其他方向的,比如 iOS 開發、Web 前端、Machine Learning 等之類的,看到這個消息,彷彿看到 Android 的又一個春天到了,轉而又開始學習 Android,這個完全沒必要,語言雖然是新的,但是平台還是那個平台,這跟一種新的行業機會出現是兩碼事。

然後,毫無疑問,Kotlin 肯定會對 Android 開發者有影響,它將改變 Android 開發者的方式,效率會極大提高,所以 Android 開發者肯定是要學習下這門語言的,但是也沒有那麼想像的那麼緊迫,好像比別人晚學一步就丟掉飯碗一樣,畢竟一種語言的過度,一定是需要一個過程的,它不是創造了一種新的職業機會,它還是服務於現有的 Android 職位的,所以你比別人早點學會,或者比別人晚點學會,差別沒那麼大,但是長期來看,一旦普及,Kotlin 一定會極大提升開發人員的效率,我姑且大膽的認為,Java 被 Kotlin 替代用來做 Android 開發是早晚的事,所以,Android 開發者有時間就學習下吧,至於學習資源,GitHub 上搜 「Kotlin」一大堆。

最後,還有讀者留言,說現在正在學習 Android,但是 Java 已經學的差不多了,要放棄直接學習 Kotlin 么?這個當然不能放棄,我們前面說了,Kotlin 和 Java 是完全兼容的,而且一門語言的完全替代是需要蠻長時間的,所以,即使 Kotlin 能在一家公司普及,成為主流開發語言,但是老的代碼還是用 Java 編寫的,對老舊代碼的處理,想完全用 Kotlin 替換過來還是很耗費時間與精力的事,所以,我認為,在很長一段時間裡,都是看到一個項目是混合著 Java 和 Kotlin 語言的,新功能用 Kotlin 編寫,老代碼用的是 Java,故學習 Java 還是很有必要的,更何況 Kotlin 本身也是一種基於 Jvm 的語言,跟 Java 還是有著很強的關係的。

對了,明天的 IO 有「Android 之神」Jake Wharton 關於 Kotlin 的一個 Session,期待這場演講。


作為一個多年來一直推廣Java語言很糟糕這一觀點的人,我表示很欣慰。簡而言之:

JB就是屌。


之前因為@大笨蛋千里冰封 安利的原因一直對Kotlin也有一些關注,看著kotlin發展我也是有一些期待的。不過看到這個新聞我就想棄坑了。

----------------------

順便發個圖:

Null safe


培訓班就要來了,本來一片凈土,將變得魚龍混雜。

原本一門Null safe的優雅語言,將變成var與!!的世界。今天,我加的那幾個Kotlin群平均智商變成了昨天的5%。

我真他媽想讓Haskell變成官方語言,媽賣批


如果下個版本的framework開始逐步用kotlin替代JAVA,JAVA在安卓上怕是要血崩。


作為一個Swift iOS程序員,給Android開發者一點建議。

建議Android開發者立刻上Kotlin的車。無論是Objective-C還是Java肯定在相當久遠的時期內都會存在。混編是真正的開發常態,早點踩坑才是正道。

Kotlin之於Java,Android。

正如Swift之於Objective-C,iOS。

Kotlin無論語言語法,自身定位,發展處境,都和Swift 超級像。要說最大的區別:一個是親生的,一個還是領養的。


昨晚看了下kotlin語法,簡直是拯救java神器。

重要的是,他開源。再也不用陪oracle打無聊的官司了。

Oracle在作死的路上越走越遠。


kotlin剛出時用過,bug一大堆,在編譯層面上就有各種問題,而且還沒有成熟的文檔來解決,遂放棄。

kotlin出正式發布版時又撿起來試了一下,仍然有之前用時的問題,但是至少我能找到解決的方案了,然而在編譯時總會出現各種無法預料的問題,可能是因為習慣了java的思想,導致寫法的不同吧,為了減少排錯的時間,加快項目進度,再次放棄。

現在谷歌開始挺kotlin,我準備再試一次,看看它發展到什麼程度了。

但是不管谷歌怎麼說,如果kotlin不能完全替代java在安卓開發中的作用(甚至做到java做不到的)的話,我無法說服自己在項目中使用它。

不吹不黑,對kotlin真心沒什麼感覺,作為新語言了解一下沒問題,我也很願意,但是成本(時間和精力)必須是優先考慮的事情,興趣如果不能轉換為飯碗,也就只是玩具而已


沒有分號我用的很不習慣ヽ( ̄д ̄;)ノ


被智子鎖禁錮了多年的 Android 開發玩家終究有了解脫。要知道 Java 是語言界中十分保守的一門語言,大多數 Android 開發者對語言界流行 Feature 缺乏認識,例如對 FP 毫不了解,而實際上 FP 近年來被逐漸證明很適合解決前端的一些問題,這直接導致了大多數人對 Android 開發的理解只停留在三方庫應用的層面上。而 Google 這支強心針打得正是時候,這次欽定必然掀起一股浪潮,讓更多人對現代語言以及語言思想有所感知。


原先就知道google在找第二個語言來取代對java的依賴。還猜測是swift,沒想到是(聽都沒聽過的)Kotlin!

管他呢,我照樣用C++。


官方背書使得Kotlin的影響力正在極度放大。

鑒於Kotlin可以和Java混合使用的特點,會有越來越多的項目開始使用它。也會漸漸成為Android程序員必須掌握的一種語言。

目前只是簡單了解,有新的體會再更新


這些是必然的原因,因為Google深陷與oracle的訴訟中,為了避免訴訟Google層想使用open jdk作為andriod的開發語言,這下可以了非常符合google的尿性。Java可以開發andriod,所以有的人為了開發安卓就會去學習java,現在google不用了java,java的地位可能會受到影響,python,go的可能會崛起!有些語言比java好用只是某些原因一直沒能火起來,說不定借著這個機會就會火一把!


之前把語法層面的都學的差不多了。至於真正的要在項目中使用,還是過個兩三年再說吧。

Android Studio 切換過去也不是很難。完全可以把現有的代碼直接右鍵轉換過去,然後再去慢慢觀察就好。如果真要過渡過去也十分簡單。

目前,沒有必要,也沒有驅動力去做這件事。


如何看待?對於向公司建議使用 Kotlin 參與項目開發這一點,當然是件大好的新聞。

那些不懂技術的 Leader 和二流程序員總算不能以: 「Kotlin 屬於第三方支持,不考慮使用」 來作為借口了。(當然他們可以換個借口,例如剛被官方支持肯定還不成熟之類的,逃


謝謝評論指正,kotlin的泛型還是受制於jvm的歷史包袱,還是type erasure

-------------

一兩個月前我被java的一個問題(好像是反射相關)困擾,在谷歌上搜索,在谷歌的issue反饋上看到這是一個bug...

當時我也對java比較煩了,lambda經常報ClassNotFoundException(rebuild一下就好了,所以這是個bug),streamapi要api24,連個try with resource我記得都要api21。

然後我看那個bug下的回帖,有個人說他受不了垃圾java,要轉去用kotlin了,然後我也跟著學了。

對java和c#比較了解的朋友知道,c#語言特性甩垃圾java20年。然而他有個叫巨硬的爹,造開源輪子那幫人都不喜歡他,所以開源輪子遠沒有java上多。

剛學kotlin我就很興奮,因為這玩意兒可以跟java無縫互操作,甚至你項目里可以混用java和kotlin,這就意味著他能夠利用現有的java輪子。同時有問題的地方(比如反射,kotlin整了新的一套,用到了反射的庫可能有點問題)你可以切換到java去寫。這就等於說是繼承了java的優勢,並且現行項目可以慢慢過渡到kotlin上去。

同時他又吸收了很多現代語法。比如他把java泛型的坑填上了,kotlin里的泛型是類似於C#那種的泛型,不再是java里的類型擦除;他的函數變成了一等公民,函數式特性我感覺是比c#更明顯一點的。還有什麼擴展啊屬性啊尾遞歸檢查啊這些的,不一一列舉了,這一切都只需要java6的jvm就可以運行。

簡而言之,這個語言可以終結c#黨和java黨之間的戰爭了。另外,jb還打算讓kotlin能編譯成native,他們官方說是以後可以在mac和iOS上跑(看到這裡你他喵的還沒心動?)。

總之我今天早上看到這個新聞是挺激動的...


為什麼不把js變成官方開發語言?搞完android之餘,順便可以做個ios應用和網頁應用,多好。搞啥kotlin,最後還不是變成位元組碼運行在vm里


這兩天公眾號和知乎到處都是kotlin專欄和文章,馬上有一批人要交智商稅了。IT界現在一堆浮躁的的人,每天說風就是雨。不想想怎麼提高自己,天天就知道一味追求新技術


推薦閱讀:

TAG:谷歌Google | Android | Kotlin |