10.10 Java 老啦?Kotlin要取代?

Java是歷史。它不能在確保向後兼容性的同時演變成現代語言。但它給了我們最好的JVM生態系統,並導致了許多優秀語言的誕生,比如Groovy、Scala、Clojure、Kotlin等等。

Java 老啦?Kotlin要取代?

歡迎年紀最小的Kotlin!

Kotlin出生於2011年,但在去年穀歌宣佈Kotlin為android的官方開發語言後,它迅速走紅。Kotlin從其他JVM語言中借鑑了很多強大的特性。讓我們快速瞭解一下Kotlin可以給Java開發人員帶來的好處。

無需再擔心NPE

Java程序員在運行時討厭空指針異常(NPE)。Kotlin提供了最好的支持,以避免在編譯時出現空引用。默認情況下,所有對象都不能為空。如果要定義可空類型,必須使用?操作符。當訪問可空對象時,編譯器強制使用安全調用操作符?. .我可以用埃爾維斯操作員嗎?:指定默認值。

Kotlin可以自動推斷類型,因此不需要顯式聲明。只需要使用val來定義最終變量,使用var來定義普通變量。注意,只有當聲明和賦值出現在相同的語句中時,才能推斷類型。

避免複雜的字符串格式化

Kotlin允許使用字符串模板來簡化字符串格式。$可以用來引用變量,複雜表達式可以使用${}。

創建簡單的POJO無需使用樣板代碼

Kotlin提供了一個數據類,它定義了只用於保存數據的對象。Kotlin自動為數據類生成equals、hashCode、toString、copy、getter和getter(用於使用var定義的屬性)方法。您還可以在數據類上使用對象解構來將對象屬性保存到變量中。

可以避免Builder類和冗餘的方法重載

Kotlin支持方法的命名參數,因此在大多數情況下不需要創建Builder類。此外,Kotlin還支持默認方法參數,因此您不需要重載方法來傳遞默認值。

靜態初始化集合無需再使用guava庫

Kotlin提供了一個簡單直接的方法,可以使用listOf、mapOf和setOf方法初始化一行中的集合。映射初始化還支持直觀的值語法鍵。它還支持地圖解構,以方便迭代。

創建Singleton不再複雜

Kotlin的對象聲明只需要一行代碼就可以創建單例對象。

無需使用不必要的局部變量

在Kotlin中,try、when和其他結構是具有返回值的表達式。例如,您可以將try的結果分配給一個變量,而不必創建一個局部變量。同樣,when可以用作表達式。什麼時候是Java開關,但更強大。

可以避免類強制轉換的異常

Kotlin提供了is操作符(相當於Java的instanceOf)來檢查對象是否為指定類型。類型轉換是使用is運算符自動完成的。這避免了由於類型轉換不正確而導致的異常。

同一個對象內的調用序列中,無需再重複類型名

Kotlin提供了這個結構,使反覆調用同一個對象的方法變得很容易,因此不必每次都指定變量名。Java通常使用構建器模式和方法鏈來實現這一點。但是在Kotlin,即使對於非構建類,也更容易。

Kotlin還提供了擴展函數apply,它實現了相同的功能。

Delegation或decorator模式無須再使用樣板代碼

要使用委託或裝飾器模式而不是繼承,我們通常使用委託或裝飾器模式,但是包裝器類必須重複被代理的類的每個方法。Kotlin中的by操作符可以簡化委託模式。它將自動實現調用代理類所需的方法。當然,您仍然可以在必要時重載特定的方法。

創建靜態函數無需再使用類

Kotlin支持類之外的函數,因此創建靜態實用程序函數不需要創建類。

在lambda中修改非final的變量無需再使用hack

Java支持lambda的方式是用匿名類自動替換它,但這樣就無法更改lambda中的非最終變量。但是在Kotlin中,你可以直接修改lambda中的非最終變量。

延遲加載不再困難

Kotlin提供了一種非常簡單的方法,通過指定lazy關鍵字來延遲屬性的初始化。

不需要完全切換到新語言

Kotlin與Java無縫集成,使與舊Java代碼的集成變得容易。您可以繼續使用第三方Java庫和框架。與Scala不同,Kotlin沒有自己的集合庫,它只是擴展了JDK的集合。因此,在Java和Kotlin集合類型之間進行轉換不需要膠水代碼。

代碼更緊湊,更易讀

Kotlin使用方法名稱約定重載許多操作符,以提高代碼的可讀性。例如,方法plus用於重載+操作符,減去重載-操作符,乘以重載*操作符,div重載/操作符等等。它還支持更多的操作符重載,比如%、+=、+-、++、-等等。

Kotlin使用 .. 運算符定義範圍,使代碼更緊湊。它還提供了until關鍵字以去除邊界,step操作符以跳過項目。in操作符用來檢查範圍。還可以通過實現rangeTo和contains方法來重載 .. 和 in 運算符。

擴展現有的JDK類很容易

Kotlin可以以非常簡單的方式向現有類添加擴展函數。這是一個功能強大的特性,可以很容易地擴展語言的核心API。

為什麼應該使用Kotlin?

可以將生產力提高許多倍:

  • -它是一種靜態類型的語言,因此您可以在編譯時捕獲許多錯誤;
  • -工具支持是完美的,畢竟是公司編寫IDE生成的語言;
  • -由IDE公司JetBrains創建,他們關注開發人員的生產力。
  • -避免Java開發人員的許多日常煩惱。

可以獲得許多最佳實踐:

  • -所有課程均為期末考試;
  • -不可變的;
  • -通過必需的關鍵字重載,而不是可選的註釋;
  • -不存在必須處理的受控異常;
  • -沒有原始類型;
  • -對泛型的支持更簡潔。

非JVM的支持:

  • Kotlin也可以編譯成JavaScript進行前端開發;
  • Kotlin也可以在其他本地運行時上執行,因此它在沒有JVM的情況下運行。

開發者應該轉換到Kotlin嗎?

Kotlin很不錯,但還不完美,距離完美的語言還需要一些實踐。它背後是JetBrains和Google,因此可以相信它只會越來越好。

如果你是android開發者,你應該立即使用Kotlin。

如果您是Java開發人員,您還應該考慮其他因素,比如團隊成員、公司接受度等等。但即使你不能馬上使用它,你也應該看看Kotlin的美,現代語言。

此外,基於ThoughtWorks的技術報告,公司可以嘗試在風險可控的項目中使用Kotlin。

Java 老啦?Kotlin要取代?


分享到:


相關文章: