更新時(shí)間:2018年12月24日09時(shí)41分 來(lái)源:java培訓(xùn) 瀏覽次數(shù):
前不久Google宣布在Google I / O 上宣布為Kotlin提供Android官方支持,這也意味著Java今后將告別Android開(kāi)發(fā)的舞臺(tái)。那么,為何是Kotlin,Java到底弱在哪兒?本文將帶你解讀Android社區(qū)選擇Kotlin的幾大理由!
Kotlin VS Java
早在Google I / O公布Kotlin在Android領(lǐng)域?qū)⑷〈鶭ava以前,2016年2月發(fā)布的Kotlin 1.0版本Android社區(qū)就已經(jīng)提出了這個(gè)問(wèn)題。這是因?yàn)镵otlin代碼不僅比Java更安全,還更簡(jiǎn)潔。而且Kotlin和Java文件在Android應(yīng)用程序中是可以共存的,所以Kotlin不僅可以應(yīng)用于新程序的開(kāi)發(fā),還可以對(duì)現(xiàn)有的Java應(yīng)用程序進(jìn)行擴(kuò)展。
此外,對(duì)于Android開(kāi)發(fā)程序員來(lái)說(shuō)這也可能是一個(gè)很大的福利——大多數(shù)的Android文檔和示例都是關(guān)于Java的。另一方面,在Android Studio中將Java轉(zhuǎn)換為Kotlin也非常簡(jiǎn)單,只需將Java代碼粘貼到Kotlin文件中即可。
Kotlin的優(yōu)勢(shì)顯而易見(jiàn),資深的Java開(kāi)發(fā)人員要學(xué)習(xí)Kotlin也只需要幾個(gè)小時(shí)的時(shí)間就能搞定。而且學(xué)習(xí)的范圍也僅僅是包括消除空參考錯(cuò)誤、啟用擴(kuò)展功能、支持編程功能以及添加協(xié)同工作等。
Kotlin VS Scala
由于Android開(kāi)發(fā)工具對(duì)Scala支持還有一定的障礙,而且Scala的Android庫(kù)也是很難搞定的一個(gè)問(wèn)題,所以Android社區(qū)最終選擇了Kotlin。另一方面,Scala社區(qū)也已經(jīng)明顯意識(shí)到了這個(gè)問(wèn)題,正在努力的解決這些問(wèn)題。
但對(duì)于Scala本身是不能否定的。因?yàn)椴煌沫h(huán)境中應(yīng)用到的語(yǔ)言和系統(tǒng)工具可能也不相同。例如,Apache Spark主要是用Scala編寫的,Spark的大數(shù)據(jù)應(yīng)用程序通常也會(huì)用到Scala。
在許多方面,Scala和Kotlin代表著面向?qū)ο笳Z(yǔ)言的融合。這兩種語(yǔ)言許多的概念和符號(hào)都是共享的,例如不可聲明的val與可變聲明var。但是在某些方面比方說(shuō)在聲明lambda函數(shù)時(shí)的是設(shè)置雙箭頭還是單箭頭的問(wèn)題還是略有不同。
但是Scala有一個(gè)明顯的缺陷是編譯時(shí)間往往很長(zhǎng),開(kāi)發(fā)人員如果要構(gòu)建一個(gè)龐大的Scala存儲(chǔ)庫(kù)時(shí),這個(gè)問(wèn)題會(huì)更加明顯。而Kotlin是在最常見(jiàn)的軟件場(chǎng)景中被設(shè)計(jì)的,它的編譯速度比Java代碼編譯都快,堪稱秒殺Scala。
Kotlin與Java的互操作性
談到null處理和檢查異常的差異問(wèn)題,你可能會(huì)想知道Kotlin對(duì)Java處理互操作性調(diào)用結(jié)果的處理。Kotlin推出的平臺(tái)類型與Java類型完全類似,這就意味著可以為空但會(huì)生成空指針異常。Kotlin也可能在編譯時(shí)向代碼中注入一個(gè)斷言,以避免觸發(fā)實(shí)際的空指針異常。平臺(tái)類型沒(méi)有明確的語(yǔ)言符號(hào),但是如果Kotlin必須報(bào)告平臺(tái)類型。
在大多數(shù)情況下,從Kotlin調(diào)用的代碼也可以按照程序員期望的方式工作。此外Kotlin與Java的互操作性涉及到Java工具方面上——Kotlin沒(méi)有自己的編譯器或IDE,但是有流行的Java編譯器和IDE插件,包括IntelliJ IDEA,Android Studio和Eclipse。也沒(méi)有自己的構(gòu)建系統(tǒng),使用的是Gradle、Maven和Ant等。
總體來(lái)講,Kotlin比Java擁有更多的優(yōu)勢(shì)。不僅可以在JVM上運(yùn)行代碼,還可以生成JavaScript和本機(jī)代碼。與Java相比,Kotlin更安全、簡(jiǎn)潔明確。除了面向?qū)ο缶幊讨猓€支持功能編程,提供擴(kuò)展功能、構(gòu)建器、協(xié)同程序等。重要的是,對(duì)于已經(jīng)熟悉Java的程序員來(lái)講無(wú)需浪費(fèi)太多的時(shí)間學(xué)習(xí)Kotlin。
北京校區(qū)