新 GDE 上任三把火,第一篇分享這個出來我想也是挺好的,這邊部分內容也是我準備 interview GDE 的資料。

如果你 Google why Kotlin 或是 Kotlin pros. and cons. 這些關鍵字,你可以找到很多相關的文章。其實講的內容大同小異,我也不再重複。

相信很多人跟我一樣是從 Java Backend 領域轉過來的,以 Backend Side 來說,其實還是很多人選擇留在 Java 而不是往前探索 Kotlin。我聽過最強力的擋箭牌大概就是 Java 可以做到所有 Kotlin 能做到的事,為什麼我需要轉呢?

以商務的角度來說,我必須說他們是正確的。所以我的標題是 Why I Like Kotlin 而不是 Why you should use Kotlin。

在台灣以 Java 為系統主力語言的公司中,Spring Framework 的市佔率可能高達八成以上。所以當 Java 版本升級的時候,大部分的開發者會停留在 LTS 版然後觀望 Spring Framework 的升級相容度和大公司採用度。這產生一個有趣現象,目前絕大部分的開發者停留在 Java 1.8Java 11,只有很少的人會嘗試使用 Java 1.9, 10, 12, 13, 14, 15。所以雖然版本升得很快,但大家其實不太嘗試與使用。

因此,下面就來介紹為什麼我喜歡 Kotlin 吧。

JVM Family

我必須說,那真是糟糕的經驗。很明顯地 Scala 想走出自己的路,相容度不是它的第一設計考量。

跟 Scala 不同的是,Kotlin 跟 Java 高度相容,無論你要在一個專案中混合調用、編譯和部署,體驗都十分一致。而它也和其他 JVM 語言一樣繼承了 JVM 生態系,所以以前 Java 怎麼做的基本上在 Kotlin 就是這麼做,這也讓它相對其它新語言算是贏在起跑點。

Data Class

最早我們可能是用 IDE 輔助快速生成,然後出現了 Lombok Framework,透過 Annotation 的方式在編譯期生成程式碼,但 IDE 也因此需要增加 plugin 的耦合。

但現在以 Kotlin 的 Data Class 來說,只要這樣

清潔溜溜還送你一個 copy method,順便處理物件複製的議題,所以 Data Class 被稱為轉 Kotlin 首選語法是有道理的!不過呀, Scala 其實早有類似的概念叫做 Case Classes。

Syntax

更重要的是我覺得 Kotlin 可以同時讓你自由地選擇 OO 風格或是 FP 風格來編寫程式,這真的很棒!

Extension Function

Scope Functions

Kotlin 可以改寫成這樣,用 scope 分隔來提高可讀性,也能讓你的 Kotlin 看起來不是那麼 Java。

Coroutine

歸根來說,其實就是提高寫程式的舒適度,例如可讀性。但實話說只要你有正確的觀念,採用適當的 API 跟寫法,Java 跟 Kotlin 其實並不會有很大的生產力或是效能差距。

而如果能承繼 Spring Framework with Java 轉換到 Spring Framework with Kotlin,這也能讓 Kotlin 在商務應用上更被重視,作為新任的 Kotlin GDE,期待大家一起來寫 Spring Framework with Kotlin!

https://jianminhuang.cc