JetBrains 釋出Kotlin 1.0

weixin_33807284發表於2016-03-02

在Beta 之後僅僅幾個月,JetBrains 正式宣佈Kotlin 的第一個穩定版本,其基於JVM 併相容Android的新語言。製造商表示,Kotlin 打算作為一個“好工具”,目的是為了驅動設計決策向實用性和互操作性前進。Kotlin 希望解決Java 中只能通過類庫和外部工具來修復的許多問題,同時提供平滑和漸進的過渡機會。

\\

在2010年的初步設想中,JetBrains 決定建立Kotlin ,以此來提高開發他們自己的產品時(Kotlin 現在被使用在JetBrains 的產品中,比如IntelliJ IDEA)的生產效率。考慮到許多其他使用者將不得不面對同樣的問題,JetBrains 決定開源Kotlin,並且鼓勵參與和貢獻。因為它基於Java 1.6,Kotlin 很快在Android 開發者中流行起來,為他們提供了獲取一系列其他版本和語言所擁有的流行特性。事實上流行的證據就是新的Android 開發工具,比如JRebel for Android,包含了對Kotlin 的支援。

\\

雖然Kotlin 在Android 開發中超越Java 的優勢會在Android 完成遷移到OpenJDK 之後減弱,但是開發者能夠在一些其他的領域獲得益處。其中包括:

\\
  • Getter/Setter 引用:Java 中寫程式碼來訪問屬性,典型的操作是通過IDE 輔助的程式碼生成、像Project Lombok 這樣的位元組碼操作,或者是簡單的將內部屬性公開(這違背了封裝的原則)。在Kotlin 中,資料類的建立預設為所有的屬性提供了getter 和setter。 \\
  • toString、hashCode、equals:Java 為這三個方法提供預設實現,但是這些很少有用處,這意味著開發者通常必須重寫預設方法並建立他們自己的。很多情況下,所需要的實現是足夠簡單的,以便於通過一些類庫,比如Apache Commons Lang 和Google Guava 來提供。Kotlin 的資料類基於類的欄位為這些方法提供了一個預設實現,類似於大部分開發者所需要的,這意味著不需要去重寫這些方法。此外,Kotlin 的“==”操作符不是比較引用,而是和equals 方法一樣。 \\
  • 物件的部分構建:在很多時候,一個物件需要在只有部分引數被提供,同時其他引數保持預設值的情況下被構建。這通常通過建造者模式來完成,它建立一個建造者類和目標類來建立需要的物件。Kotlin 通過支援命名引數來解決這個問題。 \\
  • 空值檢查:對Java 開發者來說,避免空值是一個普遍頭疼的問題,通常通過IDE檢查(檢測值一直為空)、類裡面的斷言(Objects.requireNotNull())、類似@NotNull 或者@NonNull 這樣的註解的隱含驗證、Google 的Optional,或者之後的Java 8的Optional來解決。在Kotlin 中,空值的概念已經被轉移到語言自身,這意味著變數在編譯時就知道它們自己是否為空: \
val x: String? = \"Hi\" // Declaring x as a nullable String\x.length // Does not compile, x could be null, null check needs to happen first\\if (x != null) {\    x.length // Compiles, Kotlin understands that x is not null by this point\}\\val y: String = null // Does not compile, y is not declared as nullable
\\
  • 字串構建:在Java 中,我們可以通過使用連線運算子(\"a \" + 變數 + \" b\"),String.format() 方法能提供更好的可讀性(String.format(\"a %s b\

相關文章