以架構師角度認識Kotlin

Kotlin概述

Kotlin是一種在Java虛擬機上運行的靜態類型編程語言。它主要是JetBrains開發團隊所開發出來的編程語言。雖然Kotlin與Java語法並不兼容,但Kotlin被設計成能夠和Java代碼相互運做,並能夠重複使用如Java集合框架等現有Java引用的方法庫。它很容易在Android項目中替代Java或者同Java一塊兒使用java

Google在2019年的Google I/O大會上宣佈Kotlin被選爲Android開發首選語言。編程

Kotlin的特色不少:

  • 簡潔易用: Kotlin中提供了大量的擴展,使得咱們的代碼更加簡潔,開發出來的框架更加易用
  • 安全: 避免空指針異常等整個類的錯誤
  • 互通做性: 充分利用 JVM、Android 和瀏覽器的現有庫
  • 工具友好: 可用任何 Java IDE 或者使用命令行構建

學習Kotlin對架構師的意義Kotlin

那如今該不應學習Kotlin呢?以及學習Kotlin對架構師來講會有那些意義呢?瀏覽器

  • 學習正當時:目前Kotlin已經成爲Android開發的官方首選語言,如今學習Kotlin是正當時;
  • 順應潮流,爲了將來:如今包括一二線在內的各大互聯網公司都在往Kotlin上轉,如今學習Kotlin不只是順應潮流,更是爲了爲了將來着想;
  • 提高開發效率:在開發效率上Kotlin開發要比Java高不少;
  • 帶領團隊進行技術革新:提高團隊的對前沿技術的追求與提高團隊技術氛圍,知足小夥伴對(錢、成長、平臺)中成長的追求;

Kotlin設計理念

Kotlin設計理念

上圖是來在於Kotlin語言設計團隊的老大Andrey Breslav在2018年KotlinConf的會議上的演講,裏面包含了他對Kotlin設計上的一些理念的介紹,感興趣的同窗能夠在油管上搜一下這個視頻的完整版。安全

在KotlinConf 2018大會上Andrey Breslav表示了Kotlin並無首創一些當前沒有或大衆不太熟悉的設計理念,而是吸取了衆多其餘語言的精髓,而且提供強大的IDE支持,能真正方便開發者運用到實際項目之中。閉包

  • 不只簡潔並且可讀性強:主要指的是Kotlin支持隱藏例如getter、setter等Java模板代碼,而且有大量的標準庫以及靈活的重載和擴展機制,來使代碼變得更加直觀;

java-vs-kotlin
上圖是在設置控件點擊事件時分別用Java和Kotlin實現的對比,能夠看出Kotlin實現省去了一些模板代碼,不只看起來簡潔並且能讓開發者專一於具體邏輯的實現,可讀性更強。

  • 不只富有表現力並且可複用性更強:Kotlin將一些經常使用的功能好比:Android的一些擴展等封裝成庫,以方便開發者使用,在複用性方面它比Java有過之而不及;架構

  • 對互通性的追求要大於首創性:爲何這麼說呢,在Kotlin發展的初期,不少人會以爲Kotlin無非就是從其它語言copy過來的,之說以這麼以爲是由於你看像高階函數,閉包,擴展,Lambda表達式等都不是Kotlin獨創的,都是從現有的語言中 借鑑過來的;Kotlin的設計者的理念是不追求首創性,而是追求更好的互通性,Kotlin要想超越Java必需要實現和Java的互通(互通做性),而不是另起爐竈。框架

  • 強大的工具支撐以NPE保護使健全性更強:你們都知道Kotlin是JetBrains的團隊開發的,而JetBrains也是大名鼎鼎的IntelliJ IDEA的做者,而咱們開發Android 因此的AS也是Google和而JetBrains合做的產物,能夠說在工具方面AS 爲Kotlin開發Android提供了包括編譯器檢查等強大的支持。編程語言

Kotlin構建流程

Kotlin設計理念

上圖是Kotlin和Java的構建流程對比:函數

  • *kt會被Kotlin編譯器編程編譯成.class的字節碼文件,而後被歸檔成.jar,最後呢由各平臺打包工具輸出最終的緣由程序
  • 上圖不難理解*kt最終會被編譯成Java的字節碼文件,那爲何在最後一步還須要一個Kotlin運行時呢?想必不少小夥伴對這塊確定會有所疑惑
    • 這是由於,咱們用Java來寫的程序全部的實現都會有標準的Java類庫來作支撐,好比:java.lang.*, java.util.*,但Kotlin中的類庫是不在標準的Java類庫中的,因此,Kotlin應用程序須要在最後一步藉助Kotlin運行時來支撐這些Java標準類庫沒有的實現。

該如何有效的學習

  • 首先過一遍上述的Kotlin與Java的異同Kotlin中差別的部分有個印象
  • 跟着本課程的Kotlin講解學習一篇
  • 善用工具(君子生非異也,善假於物也

終極工具(Practice)

若是你遇到一些代碼不知道該如何用Kotlin來實現的時候,不妨試試下面的工具:工具

public interface BrightnessListener {
    String[] onViewBrightness(String... args);
}
複製代碼

經過以下步驟將上述Java文件轉成Kotlin:

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

或者將上述代碼複製到kotlin文件中利用AS的自動轉換功能進行轉換:

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

Kotlin能夠理解爲Java的語法糖,咱們能夠藉助AS提供的工具來查看咱們Kotlin代碼的Java 模樣,也就是說IDE 會將咱們的Kotlin代碼轉成怎樣的Java代碼:

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

參考

相關文章
相關標籤/搜索