Android開(kāi)發(fā)者需知的5種Kotlin特性
譯文【51CTO.com快譯】業(yè)界一直普遍認(rèn)為,Java是Android操作系統(tǒng)的核心。因此,對(duì)于每一位Android開(kāi)發(fā)人員來(lái)說(shuō),Java是他們的首要選擇。不過(guò)直到Kotlin的出現(xiàn)之后,這種狀態(tài)被完全顛覆了。Kotlin也是一種編程語(yǔ)言。而在某種程度上,它的開(kāi)發(fā)特性比Java更好,可以說(shuō)它是一種更為有效的替代方案。
最近在Android社區(qū)里,大家對(duì)于Kotlin的討論熱情真是有增無(wú)減。在此,我想乘此機(jī)會(huì)和大家討論一下,作為Android開(kāi)發(fā)者,需要知曉并掌握的五種Kotlin關(guān)鍵特性。
Kotlin勝過(guò)Java之處
由JetBrains設(shè)計(jì)和開(kāi)發(fā)的Kotlin解決了Java的一系列問(wèn)題。目前,雖然Java并不會(huì)在一段時(shí)間內(nèi)很快淘汰,但是在可以預(yù)見(jiàn)的未來(lái),Kotlin將繼續(xù)在Android開(kāi)發(fā)領(lǐng)域發(fā)揮主導(dǎo)作用。
讓我們首先來(lái)看看Kotlin在哪些關(guān)鍵領(lǐng)域,有著勝過(guò)Java的優(yōu)勢(shì):
- Kotlin帶有一系列能夠與Java協(xié)同工作的工具和框架。
- 作為一門(mén)編程語(yǔ)言,Kotlin比Java更明確、更簡(jiǎn)潔。
- 與Java相比,Kotlin有助于減少程序的整體代碼量,并能夠***限度地減少錯(cuò)誤率。
- 與Java不同,Kotlin加載了一種高級(jí)編譯器,可以在編譯過(guò)程與運(yùn)行環(huán)境中,檢查各種錯(cuò)誤。
1. 效率
Kotlin是一種學(xué)習(xí)曲線較平緩的編程語(yǔ)言。同時(shí),它能夠幫助開(kāi)發(fā)人員通過(guò)最少的代碼量,構(gòu)建出自己的應(yīng)用。因此,在學(xué)習(xí)、掌握語(yǔ)言、以及編寫(xiě)應(yīng)用等方面,Kotlin能夠幫助程序員更快速地完成任務(wù)。
值得一提的是,它能夠?qū)⒊绦虻拇a行數(shù)降到***。與Java相比,其普通代碼的長(zhǎng)度約為Java的五分之四。因此,Kotlin為開(kāi)發(fā)人員提供了更好的、生成更高質(zhì)量應(yīng)用程序的機(jī)會(huì)。
2. 空安全
空安全(Null Safety)特性是Kotlin的關(guān)鍵優(yōu)勢(shì)之一,也是每一位Android開(kāi)發(fā)人員覺(jué)得非常實(shí)用的一項(xiàng)特性。在使用Java編寫(xiě)代碼時(shí),每位Java開(kāi)發(fā)人員都必須反復(fù)處置NullPointerException的相關(guān)問(wèn)題。雖然這種特殊元素有助于我們測(cè)試軟件的產(chǎn)品質(zhì)量,但是實(shí)際上,它在很大程度上降低了程序員們的開(kāi)發(fā)速度和效率。
因此,該特性從根源上減少了各種應(yīng)用在運(yùn)行環(huán)境中的復(fù)雜性。相應(yīng)地,開(kāi)發(fā)人員也樂(lè)得在編譯代碼時(shí),不再顧慮各種空指針的異常。而在Java環(huán)境中,根本就沒(méi)有關(guān)于空安全特性的相關(guān)信息與服務(wù)。
值得注意的是,Kotlin在初始化的早期階段為Java開(kāi)發(fā)人員提供了空安全的特性。也就是說(shuō),開(kāi)發(fā)人員可以在初始化的開(kāi)始時(shí),就判定是否需要給空安全進(jìn)行賦值。此后,Kotlin便能夠通過(guò)編譯器來(lái)提供空安全性。此舉大幅降低了開(kāi)發(fā)人員在運(yùn)行環(huán)境中所面臨的各種空指針異常(Null Point Exceptions)風(fēng)險(xiǎn)。
3. 延遲加載特性
更快的加載速度當(dāng)然是任何一款優(yōu)質(zhì)應(yīng)用的最重要指標(biāo)之一。由Kotlin提供的延遲加載(Lazy-Loading)特性能夠很好地解決此類(lèi)問(wèn)題。當(dāng)您使用Kotlin進(jìn)行Android開(kāi)發(fā)時(shí),該特性將幫助您最小化應(yīng)用程序的啟動(dòng)時(shí)間。在實(shí)際應(yīng)用中,Kotlin能夠更快地加載其初始化的必要內(nèi)容,而在后續(xù)的加載過(guò)程中,再將其他一些非必需的元素和內(nèi)容,逐步加載到應(yīng)用頁(yè)面上。
因此,通過(guò)這種延遲加載的特性,使用Kotlin進(jìn)行編程的Android開(kāi)發(fā)人員,可以優(yōu)先考慮那些主要的資源,并將其保留在主內(nèi)存中,以確保實(shí)現(xiàn)更快的加載速度。而與此同時(shí),他們也可以選擇將某些次要資源保留在輔助內(nèi)存里。
4. 擴(kuò)展函數(shù)
擴(kuò)展函數(shù)也被Kotlin開(kāi)發(fā)人員經(jīng)常稱為標(biāo)準(zhǔn)庫(kù)函數(shù)(Standard Library Functions)。它是一項(xiàng)能夠在很多方面幫助到開(kāi)發(fā)人員的關(guān)鍵功能。在使用Kotlin進(jìn)行編程時(shí),我們可以將它作為面向?qū)ο?object-oriented)語(yǔ)言的基本函數(shù),進(jìn)行按需擴(kuò)展。
雖然Java只允許開(kāi)發(fā)人員在常見(jiàn)的主流類(lèi)中包含新的功能函數(shù),但是那些被進(jìn)一步擴(kuò)展的類(lèi),卻可能會(huì)給開(kāi)發(fā)人員訪問(wèn)各種即用型(ready-to-use)部件帶來(lái)麻煩。相比之下,Kotlin則允許我們將這些函數(shù)按需進(jìn)行擴(kuò)展。同時(shí),我們也能夠?qū)⒏鞣N新的函數(shù)平滑地添加到現(xiàn)有的類(lèi)中。此外,Kotlin的標(biāo)準(zhǔn)庫(kù)還提供了對(duì)于各種標(biāo)準(zhǔn)函數(shù)的豐富選項(xiàng)。
5. 集合和流
如果您是一位Java開(kāi)發(fā)人員,那么在Java應(yīng)用的開(kāi)發(fā)過(guò)程中,您不可避免地需要了解和處理各種對(duì)象集合。出現(xiàn)此類(lèi)情況的原因是:各種Java對(duì)象需要通過(guò)該過(guò)程,來(lái)轉(zhuǎn)換為不同的表示元素。因此,Java通常會(huì)產(chǎn)生平行的翻譯對(duì)象(translated objects)流,而此舉則會(huì)導(dǎo)致整個(gè)應(yīng)用程序的速度變慢。
作為一種高級(jí)編程語(yǔ)言,Kotlin使用了不可變集合(immutable collections)來(lái)解決上述問(wèn)題。在此,各種豐富的函數(shù)API將能夠自動(dòng)地返回一些具有相同功能的集合。
結(jié)論
目前,盡管Java仍有著許多先進(jìn)的功能與優(yōu)勢(shì),但是對(duì)于Android開(kāi)發(fā)人員來(lái)說(shuō), 作為后起之秀的Kotlin有著與Java良好的互操作性,以及較平緩的學(xué)習(xí)曲線。因此,它已經(jīng)成為了Android開(kāi)發(fā)人員的另一種***選擇。
原文標(biāo)題:5 Kotlin Features That Every Android App Developer Must Know,作者:Atman Rathod
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】