社區(qū)大神們對Kotlin的觀點:
- 只是語法糖而已
- 這句話倒沒有錯,然而作為一個工程實踐導(dǎo)向的語言,并非為了證明某項理論或者政治正確,為了工程中更好用是第一要素,泛泛而談,各位寫的各種方便使用的小工具、inline函數(shù)等,不也是語法糖么?
- 開發(fā)中遇到各種坑
- 這個可以理解,但是其根本上 Java 100% 兼容(雖然不在同一個文件),這就意味著遇到坑不會出現(xiàn)像其他語言一樣不可挽回的,只能很丑陋的做 trick 的情況
- 支持Kotlin的原因是和Oracle撕逼
- 這個...我無力吐槽,換句話說,我們關(guān)注的應(yīng)該只是語言本身的特性和優(yōu)缺點,背后的邏輯我想我們可以不必過于關(guān)注
- Groovy 、Template Plugin 可以實現(xiàn) Kotlin 的各種功能
- 這句話也沒錯,就好比 C++ 認(rèn)為 Java 的所有功能自己都能實現(xiàn),而且性能甩 Java 十條街,但是這真的有意義么?一個好的語言應(yīng)該是讓大家更樂于遷移,更樂于接受,我想 Kotlin 的微信指數(shù)暴增就說明了這一點,而相比起來,Go 的生態(tài)要從零構(gòu)建,不在一個起點
正文:
-
趕時髦
最近 Kotlin 的討論,在我的知乎時間線上成爆發(fā)趨勢,大多數(shù)情況下我并不是一個趕時髦的人,然而 Kotlin 的火熱超出想象,甚至微信指數(shù)一度超越 Java,好奇心驅(qū)使我一定要嘗試了一下。在之前多年的職業(yè)生涯中,我編寫了大量的 Java 代碼,對 Java 語法的啰嗦是有深刻體會的,可以說要不是因為大量的項目維持在 Java 平臺,肯定早就切換到其他語言了(比如 Python 現(xiàn)在是我的首選語言)。對于其他的一些 JVM 語言其實也都拿來在工程上時間過,比如 Scala(鑒于其巨難用的 SBT 果斷放棄,不知道近況如何了),也有一些其他的小眾 JVM 語言,我在工程上用了之后根本沒有他們說的那種酷炫的效果,根本就是假的,都是特效。對于 Kotlin,我抱著試一試的態(tài)度試學(xué)了兩個療程,經(jīng)過一周左右的熟悉和改造(特意找了一個較為復(fù)雜的舊全文檢索項目進(jìn)行了改造,代碼量縮減為 1/3),和大部分人的謹(jǐn)慎態(tài)度不一樣,我認(rèn)為 Kotlin 有巨大的潛力全面替代 Java。
-
體驗
以下這幾點是我在實踐中最喜歡的:- 代碼的大幅度精簡
- 100% 兼容 Java 代碼
- 函數(shù)式編程
- 各種語法糖
感想
我認(rèn)為 Kotlin 有望成為替代 Java 成為新的工業(yè)語言(當(dāng)然對于新人來說入門門檻是提高了一些),目前 Google 宣布 Kotlin 成為Android 一級語言,我相信并非由于部分人說的和 Oracle 的專利之爭,而是實實在在期望全面提升 Android 的開發(fā)效率和語言層面的特性支持(Java 8 才支持 stream 操作,而且語法依然很難看,可見當(dāng)權(quán)派多么固執(zhí))。Google 和 Jetbrains 的深度合作也讓人浮想聯(lián)翩,下一步收購 Jetbrains,大力推廣 Kotlin 語言也不是不可能(畢竟據(jù)說 Swift 在國外已經(jīng)是主流了,咱碼農(nóng)燈塔也不能老守著古董級的 Java 不放),而 Jetbrains 推出的各種開發(fā)神器之成功也是有目共睹的。100% 兼容 Java 也并非噱頭,而是實打?qū)嵉闹С?,甚?IDE 可以支持直接將 Java 代碼轉(zhuǎn)換成 Kotlin 代碼(目前我自動轉(zhuǎn)換了很多代碼,僅遇到一例位操作轉(zhuǎn)換失?。?偨Y(jié)起來,切換成本幾乎沒有(絕大多數(shù)情況可以依賴 Jetbrains 的神器自動轉(zhuǎn)換 Java 代碼),同時有巨頭親爹,未來的光明前途不可限量。-
學(xué)習(xí)和遷移
官方網(wǎng)站的文檔和例子非常詳實,一個成熟的 Java 開發(fā)者應(yīng)該很容易快速按照官網(wǎng)的例子學(xué)會。如果您是編程初學(xué)者并且英文不是很好,不建議在現(xiàn)在這個階段將這門語言作為第一語言(中文社區(qū)資源還不是特別豐富)。對了,Spring 5 專門為支持 Kotlin 做了大量的工作,就問你怕不怕:
預(yù)祝大家早日脫離 Java 苦海,擁抱 Kotlin,節(jié)省 50% 工作時間,來場說走就走的旅行。
