如何快速上手Kotlin開發(fā)?

如何快速上手Kotlin開發(fā)?

Kotlin概述

Kotlin是一種在Java虛擬機(jī)上運(yùn)行的靜態(tài)類型編程語(yǔ)言。它主要是JetBrains開發(fā)團(tuán)隊(duì)所開發(fā)出來(lái)的編程語(yǔ)言。雖然Kotlin與Java語(yǔ)法并不兼容,但Kotlin被設(shè)計(jì)成可以和Java代碼相互運(yùn)作,并可以重復(fù)使用如Java集合框架等現(xiàn)有Java引用的方法庫(kù)。它很容易在Android項(xiàng)目中替代Java或者同Java一起使用。

Google在2019年的Google I/O大會(huì)上宣布Kotlin被選為Android開發(fā)首選語(yǔ)言。

Kotlin的特點(diǎn)很多:

  • 簡(jiǎn)潔易用: Kotlin中提供了大量的擴(kuò)展,使得我們的代碼更加簡(jiǎn)潔,開發(fā)出來(lái)的框架更加易用
  • 安全: 避免空指針異常等整個(gè)類的錯(cuò)誤
  • 互操作性: 充分利用 JVM、Android 和瀏覽器的現(xiàn)有庫(kù)
  • 工具友好: 可用任何 Java IDE 或者使用命令行構(gòu)建

學(xué)習(xí)Kotlin對(duì)架構(gòu)師的意義Kotlin

那現(xiàn)在該不該學(xué)習(xí)Kotlin呢?以及學(xué)習(xí)Kotlin對(duì)架構(gòu)師來(lái)說(shuō)會(huì)有那些意義呢?

  • 學(xué)習(xí)正當(dāng)時(shí):目前Kotlin已經(jīng)成為Android開發(fā)的官方首選語(yǔ)言,現(xiàn)在學(xué)習(xí)Kotlin是正當(dāng)時(shí);
  • 順應(yīng)潮流,為了未來(lái):現(xiàn)在包括一二線在內(nèi)的各大互聯(lián)網(wǎng)公司都在往Kotlin上轉(zhuǎn),現(xiàn)在學(xué)習(xí)Kotlin不僅是順應(yīng)潮流,更是為了為了未來(lái)著想;
  • 提升開發(fā)效率:在開發(fā)效率上Kotlin開發(fā)要比Java高很多;
  • 帶領(lǐng)團(tuán)隊(duì)進(jìn)行技術(shù)革新:提升團(tuán)隊(duì)的對(duì)前沿技術(shù)的追求與提升團(tuán)隊(duì)技術(shù)氛圍,滿足小伙伴對(duì)(錢、成長(zhǎng)、平臺(tái))中成長(zhǎng)的追求;

Kotlin設(shè)計(jì)理念

上圖是來(lái)在于Kotlin語(yǔ)言設(shè)計(jì)團(tuán)隊(duì)的老大Andrey Breslav在2018年KotlinConf的會(huì)議上的演講,里面包含了他對(duì)Kotlin設(shè)計(jì)上的一些理念的介紹,感興趣的同學(xué)可以在油管上搜一下這個(gè)視頻的完整版。

在KotlinConf 2018大會(huì)上Andrey Breslav表示了Kotlin并沒(méi)有獨(dú)創(chuàng)一些當(dāng)前沒(méi)有或大眾不太熟悉的設(shè)計(jì)理念,而是吸收了眾多其他語(yǔ)言的精髓,并且提供強(qiáng)大的IDE支持,能真正方便開發(fā)者運(yùn)用到實(shí)際項(xiàng)目之中。

  • 不僅簡(jiǎn)潔而且可讀性強(qiáng):主要指的是Kotlin支持隱藏例如getter、setter等Java模板代碼,并且有大量的標(biāo)準(zhǔn)庫(kù)以及靈活的重載和擴(kuò)展機(jī)制,來(lái)使代碼變得更加直觀;


上圖是在設(shè)置控件點(diǎn)擊事件時(shí)分別用Java和Kotlin實(shí)現(xiàn)的對(duì)比,可以看出Kotlin實(shí)現(xiàn)省去了一些模板代碼,不僅看起來(lái)簡(jiǎn)潔而且能讓開發(fā)者專注于具體邏輯的實(shí)現(xiàn),可讀性更強(qiáng)。

  • 不僅富有表現(xiàn)力而且可復(fù)用性更強(qiáng):Kotlin將一些常用的功能比如:Android的一些擴(kuò)展等封裝成庫(kù),以方便開發(fā)者使用,在復(fù)用性方面它比Java有過(guò)之而不及;

  • 對(duì)互通性的追求要大于獨(dú)創(chuàng)性:為什么這么說(shuō)呢,在Kotlin發(fā)展的初期,很多人會(huì)覺得Kotlin無(wú)非就是從其它語(yǔ)言copy過(guò)來(lái)的,之說(shuō)以這么覺得是因?yàn)槟憧聪窀唠A函數(shù),閉包,擴(kuò)展,Lambda表達(dá)式等都不是Kotlin首創(chuàng)的,都是從現(xiàn)有的語(yǔ)言中
    借鑒過(guò)來(lái)的;Kotlin的設(shè)計(jì)者的理念是不追求獨(dú)創(chuàng)性,而是追求更好的互通性,Kotlin要想超越Java必須要實(shí)現(xiàn)和Java的互通(互操作性),而不是另起爐灶。

  • 強(qiáng)大的工具支撐以NPE保護(hù)使健全性更強(qiáng):大家都知道Kotlin是JetBrains的團(tuán)隊(duì)開發(fā)的,而JetBrains也是大名鼎鼎的IntelliJ IDEA的作者,而我們開發(fā)Android 所以的AS也是Google和而JetBrains合作的產(chǎn)物,可以說(shuō)在工具方面AS 為Kotlin開發(fā)Android提供了包括編譯器檢查等強(qiáng)大的支持。

Kotlin構(gòu)建流程

上圖是Kotlin和Java的構(gòu)建流程對(duì)比:

  • *kt會(huì)被Kotlin編譯器編程編譯成.class的字節(jié)碼文件,然后被歸檔成.jar,最后呢由各平臺(tái)打包工具輸出最終的原因程序
  • 上圖不難理解*kt最終會(huì)被編譯成Java的字節(jié)碼文件,那為什么在最后一步還需要一個(gè)Kotlin運(yùn)行時(shí)呢?想必很多小伙伴對(duì)這塊肯定會(huì)有所疑惑
    • 這是因?yàn)?,我們用Java來(lái)寫的程序所有的實(shí)現(xiàn)都會(huì)有標(biāo)準(zhǔn)的Java類庫(kù)來(lái)做支撐,比如:java.lang.*, java.util.*,但Kotlin中的類庫(kù)是不在標(biāo)準(zhǔn)的Java類庫(kù)中的,所以,Kotlin應(yīng)用程序需要在最后一步借助Kotlin運(yùn)行時(shí)來(lái)支撐這些Java標(biāo)準(zhǔn)類庫(kù)沒(méi)有的實(shí)現(xiàn)。

該如何有效的學(xué)習(xí)

  • 首先過(guò)一遍上述的Kotlin與Java的異同對(duì)Kotlin中差異的部分有個(gè)印象
  • 跟著本課程的Kotlin講解學(xué)習(xí)一篇
  • 善用工具(君子生非異也,善假于物也

終極工具(Practice)

如果你遇到一些代碼不知道該如何用Kotlin來(lái)實(shí)現(xiàn)的時(shí)候,不妨試試下面的工具:

public interface BrightnessListener {
    String[] onViewBrightness(String... args);
}

通過(guò)如下步驟將上述Java文件轉(zhuǎn)成Kotlin:

  • AS -> Code -> convert java file to kotlin file

或者將上述代碼復(fù)制到kotlin文件中利用AS的自動(dòng)轉(zhuǎn)換功能進(jìn)行轉(zhuǎn)換:

interface BrightnessListener {
    fun onViewBrightness(vararg args: String?): Array<String?>?
}

Kotlin可以理解為Java的語(yǔ)法糖,我們可以借助AS提供的工具來(lái)查看我們Kotlin代碼的Java 模樣,也就是說(shuō)IDE 會(huì)將我們的Kotlin代碼轉(zhuǎn)成怎樣的Java代碼:

  • AS -> Tools -> Kotlin -> Show kotln Bytecode

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容