一 :什麼是Kotlin
Kotlin是一種開源的靜態類型編程語言,支持面向對象和函數式編程。Kotlin提供了與其他語言類似的語法和概念,包括C#,Java和Scala等。Kotlin的目標不是獨特 - 相反,它從幾十年的語言發展中汲取靈感。它存在於以JVM(Kotlin / JVM),JavaScript(Kotlin / JS)和本機代碼(Kotlin / Native)爲目標的變體中。
這面延伸下靜態類型和動態類型的區別:
個人理解這種區別主要是類型檢查(Type Check)發生的時機不同,即可以通過判斷語言是在什麼時候檢查類型錯誤來判斷其所屬的類型。
靜態類型: 編譯時即知道每一個變量的類型,因此,若存在類型錯誤編譯是無法通過的。
另外一種說法(靜態類型語言(Statically typed language) 就是指在運行之前編譯時要檢查數據的類型的語言。如目前主流的開發語言C、C++,JAVA,C#.)
動態類型: 編譯時不知道每一個變量的類型,因此,若存在類型錯誤會在運行時發生錯誤。
另外一種說法(動態類型語言(Dynamically typed language)就是指在運行的時候纔去檢查數據的類型的語言。如大部分腳本語言,ruby,Python。所謂動態就是在運行的時候根據給變量或者對象的值的類型來確定其類型。)
Go語言的類型檢查發生在編譯時,因此它是靜態類型的。
谷歌在2017年中舉行的I/O開發者大會上宣佈,將Kotlin語言作爲安卓開發的一級編程語言。Kotlin由JetBrains公司開發,與Java 100%互通,並具備諸多Java尚不支持的新特性。JetBrains在2010年首次推出Kotlin編程語言,並在次年將之開源。Android Studio3.0後的版本會提供對Kotlin的支持。
二:Kotlin有什麼好處
Kotlin是一種運行在JVM上的靜態類型編程語言,可以編譯爲Java字節碼,同時也可以編譯成JavaScript、本地(Native)代碼,方便在沒有JVM的設備上運行。Kotlin語言具有以下特點:
1,現代並富有表現力(簡潔)
Kotlin 的現代語言功能讓您可以專注於表達自己的想法,少編寫樣板代碼。編寫的代碼越少,意味着需要測試和維護的
代碼就越少。
(1) 使用一行代碼創建一個包含 getters、 setters、 equals()、 hashCode()、 toString() 以及 copy() 的 POJO:
data class Book(val name: String)
var book: Book = Book("XiaoMing");
var copyBook: Book = book.copy("XiaoHu")
(2) 或者使用 lambda 表達式來過濾列表:
val positiveNumbers = list.filter { it > 0 }
(3) 想要單例?創建一個 object 就可以了:
object ThisIsASingleton {
val companyName: String = "JetBrains"
}
2,更安全的代碼
使用 Kotlin 提升應用品質。@Nullable 和 @NonNull 類型已納入到 Kotlin 的類型系統中,可幫助您避免
NullPointerException。此外,Kotlin 還有許多其他語言功能,可幫助您避免常見的編程錯誤。
(1) 徹底告別那些煩人的 NullPointerException——著名的十億美金的錯誤。
var output: String
output = null // 編譯錯誤
(2) Kotlin 可以保護你避免對可空類型的誤操作
val name: String? = null // 可控類型
println(name.length()) // 編譯錯誤
(3 )並且如果你檢查類型是正確的,編譯器會爲你做自動類型轉換
fun calculateTotal(obj: Any) {
if (obj is Invoice)
obj.calculateTotal()
}
3,可互操作
您可以在 Kotlin 代碼中調用 Java 代碼,或者在 Java 代碼中調用 Kotlin 代碼。Kotlin 可完全與 Java 編程語言互操作,
因此您可以根據需要在項目中添加任意數量的 Kotlin 代碼。
(1) 使用 JVM 上的任何現有庫,因爲有 100% 的兼容性,包括 SAM 支持。
import io.reactivex.Flowable
import io.reactivex.schedulers.Schedulers
Flowable
.fromCallable {
Thread.sleep(1000) // 模仿高開銷的計算
"Done"
}
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.single())
.subscribe(::println, Throwable::printStackTrace)
(2) 無論是 JVM 還是 JavaScript 目標平臺,都可用 Kotlin 寫代碼然後部署到你想要的地方
import kotlin.browser.window
fun onLoad() {
window.document.body!!.innerHTML += "<br/>Hello, Kotlin!"
}
4,工具友好
可用任何 Java IDE 或者使用命令行構建。
(1) 一門語言需要工具化,而在 JetBrains,這正是我們做得最好的地方!
並且
Kotlin在語法上具有很多下一代編程語言靜態語言特性:如類型推斷、函數式編程、多範式支持、可空性表達、擴展函數、模式匹配等。
以下是Kotlin的版本發佈:
Kotlin 1.1 的新特性
目錄
Kotlin 1.2 的新特性
目錄
Kotlin 1.3 的新特性
目錄
歷經了漫長而充足的的測試,協程終於正式發佈了!這意味着自 Kotlin 1.3 起,協程的語言支持與 API 已完全穩定。參見新版協程概述。
Kotlin 1.3 引入了掛起函數的可調用引用以及在反射 API 中對協程的支持。