1. 程式人生 > >kotlin學習day9: 為什麼要使用kotlin

kotlin學習day9: 為什麼要使用kotlin

Kotlin 是一門把 Java 平臺作為目標的新的程式語言。它簡潔、安全、優雅而且專注於和 Java 程式碼間的互操作性。它幾乎可以用於如今 Java 遍及的所有地方:伺服器端開發、 Android 應用開發和更多其他的方面。 Kotlin 能夠很好的與現有的 Java 庫和框架並存。而且,它執行的效能不亞於 Java 。

Kotlin-靜態型別

像 Java 那樣, Kotin 是一種靜態型別的程式語言。這意味著在編譯時就可以確定程式中每一個表示式的型別。編譯器可以驗證你所訪問的物件中的方法和欄位。
這(種特性)跟JVM的具有代表性的動態型別程式語言,比如Groovy和JRuby,形成對比。那些語言允許你定義能夠儲存或返回任何資料型別的變數和函式,並且可以在執行時解析方法和欄位引用。這樣的程式碼更簡短,在建立資料結構時也更為靈活。但它也有缺點,諸如無法在編譯時檢測命名拼寫錯誤,並導致執行時錯誤這樣的問題。另一方面,跟Java相比,Kotlin並不需要你在程式碼中顯式的指定每一個變數的型別。在許多場景中,變數型別能夠
根據上下文自動推斷。這將允許你省略型別宣告。

以下是一個最簡單的例子:
var x = 1

你聲明瞭一個變數。由於它以一個整數值進行初始化,Kotlin自動推斷這個變數的型別為 Int 。編譯器根據上下文判斷變數型別的能力叫做型別推斷。
以下是靜態型別的一些好處:

  • 效能 - 由於不需要再執行時判斷需要呼叫哪個方法,方法呼叫將會變得更快。

  • 可讀性 - 編譯器校驗了程式的準確性,所以在執行時發生崩潰的可能性將會降低。

  • 可維護性 - 由於你能看到程式碼呼叫了什麼型別的物件,使用不熟悉的程式碼將會變得更加容易。

  • 工具支援 - 靜態型別使得可靠的重構、精確的程式碼填充和其他的IDE特性變得可能。由於Kotlin對型別推斷的支援,大部分跟靜態型別有關的冗餘資訊將會消失,因為你不需要顯示指定型別。

Koitlin-函式式和麵向物件

函數語言程式設計的概念
  • 函式是一等公民 - 你把函式(行為塊)看做是一個值。你可以把它們儲存在變數中,把它們作為一個引數進行傳遞或者從其他函式中返回它們。
  • 不變性 - 你使用的是不可改變的物件。一旦它被建立,它的狀態便不可更改。
  • 沒有副作用 - 你使用的純函式對於給定的相同輸入將會返回相同的結果。同時,它不會修改其他物件的狀態或者和外界進行互動。
函數語言程式設計的好處
  • 簡潔-因為把函式當做一個值將會給你帶來更強大的抽象能力,這將避免你的程式碼出現冗餘
  • 多執行緒安全-多執行緒程式中的一個最大的錯誤來源是沒有正確的
    同步的情況下修改了來自多個執行緒的同一個資料。如果你使用了不可修改的資料結構和純函
    數,你可以確保不會出現不安全的修改
  • 容易測試-函式能夠被隔
    離測試而無需一堆安裝程式碼來建構函式所依賴的完整環境
Kotlin對函數語言程式設計的支援
  • 函式型別 允許函式接收作為引數的其他函式或者返回其他函式
  • lambda表示式 讓你使用最小的模板分發程式碼塊
  • 資料類 為建立不可變值物件提供了精簡的語法
  • API 標準庫為以函式式風格使用物件和集合提供了豐富的API

Kotlin-免費開源

Kotlin,包括編譯器、函式庫和所有相關的庫都是完全開源和免費的。Kotlin使用Apache 2許可。它在GitHub的開發上是開放的。同時我們歡迎社群貢獻。你也有三種可選的開源整合開發環境來開發Kotlin應用:IntelliJ IDEA 社群版、Android Studio和Eclipse都是完全支援的(當然IntelliJ IDEA 旗艦版亦可)。

Kotlin-Java的互操作性

Kotlin類和方法能夠像常規的Java類和方法那樣被呼叫。這將給你帶來在專案的任何地方混合Java和Kotlin程式碼的終極靈活性。當你開始在你的Java專案中採用Kotlin時,你可以在你的程式碼庫中的任意單一檔案中執行Java-Kotlin轉換器,其餘的程式碼將會繼續編譯和正常工作而無需任何修改。不管你所轉換的類是什麼角色,這個功能都有效。

Kotlin專注於互操作性的另一個方面是盡最大可能的使用現有的Java庫。例如,Kotlin並沒有自己的集合庫。它依賴於Java標準庫的類,通過額外的函式來擴充套件他們以更加方便的使用,這意味著當你呼叫Java API時,你不需要通過Kotlin包裝或者轉換物件。Kotlin提供的所有API都不會出現執行時消耗。

Kotlin工具也為多語言專案提供了全面的支援。它能夠編譯任意一個混合Java和Kotlin的原始檔,不論他們之間是如何的相互依賴。這個IDE特性對其他語言也是有效的。它將允許你做以下事情:

  • 在Java和Kotlin原始檔中自由切換 除錯混合語言專案並在用不同
  • 語言編寫的程式碼中單步跟蹤
  • 使用Kotlin重構和正確的升級你的Java函式,反之亦然

Kotlin-Android中的使用

  1. Kotlin的語言特性,結合支援Android框架的編譯器特殊外掛,把Android開發變為一個更具生產效率和舒適的體驗。諸如為控制元件新增偵聽器或者繫結佈局元素到欄位的常見開發任務,能夠使用更少的程式碼來實現。有時候根本不需要程式碼(編譯器會為你生成程式碼)。

  2. 效能方面,使用Kotlin也不會帶來任何的壞處。Kotlin編譯器產生的程式碼和常規的Java程式碼在執行時同樣高效。Kotlin佔用的執行時資源非常小,因此你不會遇到應用安裝包大小會大幅增加的問題。當你使用lambda表示式時,許多的Kotlin標準庫函式將會以內聯的方式出現。內聯lambda表示式確保沒有新的物件會被建立,同時,應用不會遭遇額外的垃圾回收暫停問題。

  3. 更好的應用可靠性。如果你有更多Android應用開發
    經驗,對於 Unfortunately, Process Has Stopped 對話方塊,你將不會陌生。當你的應用丟擲一個未處理的異常時,通常是 NullPointerException ,這個對話方塊將會出現。Kotlin的型別系統
    使用它的精確的空值跟蹤特性來讓空指標異常變得沒那麼迫切。大部分的程式碼在Java中會導致 NullPointerException,在Kotlin中會編譯失敗,這將確保你在應用到達使用者手上之前修復錯誤。同時,因為Kotlin是完全相容Java6的,它的使用不會引入任何新的相容性問題。你將會受益於Kotlin所有的既酷又新的特性。你的使用者將會依然能夠在他們的裝置上執行你的應用,即使他們不是在最新版的Android上執行。

Kotlin總結

  • Kotlin是靜態型別的,支援型別推斷的,在保持程式碼精簡的同時維持準確性和效能。
  • kotlin同時支援面向物件和函數語言程式設計風格,通過把函式放在一等公民的位置實現更高層次的抽象,通過支援不可變值簡化了測試和多執行緒開發。
  • Kotlin在伺服器端應用執行良好。它能全面支援現有的Java框架併為公共任務提供了新的工具,例如生成HTML和保持一致性。
  • Kotlin在Android開發方面也是可用的。由於緊湊的執行時,Android API的特殊編譯器支援,豐富的函式庫為常見的Android開發任務提供了Kotlin友好的函式支援。
  • Kotlin是免費和開源的。它為主流IDE和構建系統提供了全面的支援。
  • Kotlin是優雅的、安全的、精簡的以及互操作性強的(語言)。這意味著它專注於使用已經被證明的方案來解決常見任務,阻止一般的錯誤,例如: NullPointerException ,支援緊湊和易讀的程式碼,鬆散的Java整合功能。