10個常用流行 Kotlin 庫介紹

banq發表於2024-03-20

Kotlin 由 JetBrains開發,是一種現代程式語言,於 2011 年作為 Java 的替代語言推出,針對Java 虛擬機器 (JVM)。它最初是作為 Android Studio 中的外掛使用的。2017 年 5 月晚些時候,谷歌宣佈它為官方 Android 開發語言。Kotlin不僅限於 Android 開發,還用於各種軟體開發領域,包括後端開發、桌面應用程式開發以及資料科學和分析。

引入Kotlin的原因是為了解決現有程式語言(尤其是Java)中缺乏的各種功能,同時保持與 Java 的無縫互操作性。如今,Kotlin 已成為最受開發者歡迎的語言,其社群也大規模增加。

1. Ktor
Ktor是一個強大的非同步框架,用於構建連線系統,其中包括 Web 應用程式、HTTP 服務等。Ktor 由JetBrains開發,該公司也是設計 Kotlin 本身的公司,利用 Kotlin 簡潔而富有表現力的語法為開發伺服器端應用程式提供靈活的框架。
主要特徵

  • 一種非同步程式設計模型,允許開發人員編寫非阻塞、非同步程式碼以實現高併發。
  • Ktor 遵循模組化架構,允許開發人員僅整合和定製所需的模組。
  • 為了定義路由,Ktor 使用型別安全的DSL,這使得HTTP請求和響應處理更簡單。
  • 為了提供執行時和互動式 Web 應用程式,Ktor 內建了對Web 套接字和伺服器傳送事件的支援。

2. Coroutine
協程Coroutine已經成為Kotlin 程式設計的重要組成部分。協程是一個用於非同步管理多個執行緒的框架。它為開發人員提供了一種順序編寫非同步程式碼的方法。它簡化了非同步程式設計任務,例如發出網路請求、訪問資料庫和長 UI 操作。藉助其併發機制,開發人員可以編寫可以在需要時暫停和恢復的函式。
主要特徵

  • 協程允許它在需要時暫停執行,並允許其他程式碼在恢復執行之前執行(使用await關鍵字)。
  • 協程在事件迴圈內執行,負責排程和執行多個協程。這個事件迴圈保證了協程的有序執行。
  • 協程以有效管理資源而聞名,例如網路套接字和資料庫連線。

3. Room Database
Room由Jetpack 架構元件提供,是一個永續性資料庫庫。Room只不過是SQLite資料庫之上的一個抽象層,SQLite資料庫是一個開源的RDBMS。它簡化了建立表以及資料庫CRUD操作的過程。有了空間,開發人員可以在需要對資料庫結構進行任何更改(例如新增新列或更改列的資料型別)時輕鬆遷移。

主要特徵

  • Room允許開發人員透過在 Java/Kotlin 類和物件上定義註釋來使用SQLite資料庫。它透過將資料庫表與帶註釋的類和物件對映來簡化資料庫操作。
  • 為了捕獲查詢編譯時的錯誤,Room 對查詢執行編譯時驗證檢查。這有助於提高程式碼的可讀性。
  • Room資料庫也相容RxJava和Coroutine;它允許開發人員使用RxJava觀察者和協程來執行非同步操作。
  • Room 資料庫允許開發人員將其與LiveData無縫整合。當需要觀察資料庫中的變化並通知 UI 時,可以使用 LiveData 幫助。
  •  


4. Koin
Koin是一個輕量級的依賴注入框架,主要針對Android開發而設計。與 Dagger 不同,開發人員可以輕鬆管理整個應用程式的依賴注入。Koin 提供DSL(領域特定語言)來管理依賴關係併為 Android 和其他平臺(例如JVM 和 iOS)提供支援。

主要特徵

  • 使用 Coin,依賴關係是在模組內定義的,可以使用 DSL 語法輕鬆配置和組合模組,從而更輕鬆地管理依賴關係。
  • Koin 在執行時不使用程式碼生成和反射;相反,它使用 Kotlin 的 DSL 功能僅在編譯時解決依賴關係。
  • Coni 提供建構函式注入,其中依賴項在建構函式引數中傳遞;這促進了更加模組化的程式碼設計。
  • Coin 擁有豐富的社群和貢獻者,以及豐富的文件和現成的示例,開發人員可以使用它們來入門。


5. Ktor-http-client
ktor-http-client構建於 Ktor 之上,是一個功能強大的 HTTP 客戶端庫。透過使用 Ktor-http-client,開發人員可以在請求和響應轉換以及HTTP cookie 等功能的支援下,非同步地發出流暢的 HTTP 請求。
主要特徵

  • Ktor-http-client 提供對HTTP 請求和響應正文的支援,這意味著使用者可以輕鬆地將這些正文轉換為 JSON、XML 和其他自定義格式等格式。
  • Ktor-http 自動管理連線池,最佳化資源使用,並透過重複使用多個請求的連線來提高效能。

6. Exposed
Exposed是Kotlin的輕量級SQL 庫,主要用於資料庫操作。設計 Exposed 庫的目的是提供 API 並利用 Kotlin 功能,提供更簡潔、更輕鬆的方式來訪問資料庫。它使用 DSL直接在 Kotlin 程式碼中定義資料庫架構、查詢和操作。使用這些 DSL 方法,開發人員可以編寫簡潔且易於閱讀的程式碼。
主要特徵
Exposed 利用 Kotlin 的型別安全機制來確保資料庫查詢中的型別安全。它使用 Kotlin 來表示資料庫表、列和查詢結果。

  • 藉助 Expsed,開發人員可以使用 Kotlin 程式碼本身而不是SQL DDL 語句來定義資料庫架構。這意味著可以使用 Kotlin 類和函式宣告表、列和約束。
  • Exposed 是開源的,並在Github上公開託管,允許其他開發人員貢獻增強功能、功能和錯誤修復。
  • 它支援多種 SQL 資料庫後端,包括SQLiteMySQL和 H2 。

7. Fuel
Fuel是一個適用於 Kotlin 和 Android 的輕量級 HTTP 網路庫。Fuel 旨在簡化進行 HTTP 請求呼叫和處理響應的過程。它允許您使用其簡潔且富有表現力的 API 來執行HTTP 操作,例如GETPUTPOSTDELETE等。Fuel 為開發人員提供了進行非同步或同步請求呼叫的功能。自定義支援允許開發人員新增自定義功能、攔截器、序列化器和身份驗證機制。

主要特徵

  • 提供一種簡潔的方式來發出 HTTP 請求。為開發人員提供一種指定請求、標頭和正文的簡單方法。
  • 支援同步和非同步HTTP請求。它允許開發人員選擇使用 Kotlin 協程非同步發出請求或使用阻塞呼叫同步發出請求。
  • 使用流暢的 API,開發人員可以指定 HTTP 請求的查詢引數和標頭。
  • 它支援一系列 HTTP 方法,包括GET、POST、PUT、DELETE、PATCH、HEAD 和 OPTIONS。

8. Arrow
受 Haskell 標準庫的啟發,Arrow是 Kotlin 中的函數語言程式設計庫,提供一組資料型別和型別類。它使開發人員能夠在 Kotlin 中使用函數語言程式設計模式,例如 monad、函子和應用程式。對於併發和非同步程式設計,Arrow 提供了 type-sabe 抽象,包括資料型別 IO 和 DeferredK。

主要特徵

  • Arrow 支援功能資料型別,例如Option、Either、Try、Validated、State、IO、SequenceK、ListK、NonEmptyList、Tuple等。
  • Arrow 支援型別類的實現,例如 Functor、MonadError、Applicative、Monad、Monoid、Foldable、Traverse、Semigroup、Ord等。
  • Arrow 提供了使用Kotlintest和arrow-recursion 等庫進行基於屬性的測試的實用程式。


9. Retrofit
Retrofit是由 Square 開發的適用於 Android 和 Java 的最流行且使用最廣泛的型別安全 HTTP 客戶端庫。Retrofit 簡化了發出 HTTP 請求的過程,並減少了發出HTTP 呼叫所需的樣板程式碼。Retrofit 會自動將從伺服器接收到的響應轉換為 Kotlin 或 Java 類。使用Interceptor,開發人員可以攔截和修改HTTP 請求和響應。Retrofit 提供了常量,開發人員可以使用這些常量在控制檯日誌中列印請求和響應。

主要特徵

  • Retrofit 生成一個用於定義 HTTP 端點的介面,允許開發人員為其 RESTful 網路操作宣告方法簽名。
  • 為了配置 API 端點、請求引數和標頭,Retrofit 使用註釋機制,例如 @ GET、 @ POST、 @ Path等。
  • Retrofit 內建支援流行的序列化格式,例如JSON、XML和Form URL-Encoder。
  • Retrofit 支援攔截器,這在日誌記錄、身份驗證和錯誤處理等任務中非常有用。


10. MockK
MockK是一個模擬庫,它提供 DSL,用於在編寫單元測試用例時建立存根和模擬。它提供了用於定義模擬行為的簡潔語法,並允許與最流行的框架(例如JUnitSpek)無縫整合。為了定義模擬行為和表示式,MockK 使用 Kotlin DSL。此 DSL 利用 Kotlin 的語法功能(例如lambda 表示式、擴充套件函式和中綴函式)來提供用於處理模擬物件的簡潔 API。
主要特徵

  • 它專為 Kotlin 設計,利用其簡潔的語法和其他功能來簡化測試用例的編寫。
  • 它支援模擬類和介面,允許開發人員建立任何型別的模擬。
  • 它允許對模擬物件進行存根方法呼叫、指定返回值或設定呼叫方法時傳送內容的期望。
  • 提供豐富而詳細的文件,使開發人員可以開始編寫測試用例。

相關文章