網絡研討會視頻:以 KMM x Ktor 打造全平臺應用
來源:JetBrains 編輯:QQ123 2021-06-11 11:04:39 加入收藏
導讀
Kotlin 支持多平臺開發的特性一直受到眾多開發者的期待,畢竟能用一種語言開發前端(Kotlin/JS)、后端(Kotlin/JVM)、Android(Kotlin/JVM)及 iOS(Kotlin/Native)是非常吸引人的。2020 年 8 月,Kotlin 團隊正式發布 1.4 版,并推出KMM(Kotlin Multiplatform Mobile)及其同名插件,使 Kotlin 開發者可以用一個語言開發 Android、iOS 雙平臺的 App。本次網絡研討會就由兩位講師為大家演示如何用 KMM 及 Ktor 兩個框架,從 Mobile 到 Backend 打造全平臺應用。
主題分享
本次分享由攜程機票移動端資深工程師禹昂及 JetBrains 技術布道師圣佑兩人合力完成一個 RSS Reader 應用,由禹昂以 KMM 實現 Mobile App,再串接由圣佑以 Ktor 實現的 Backend API。
演示由后端開始,圣佑首先介紹由 JetBrains 團隊以 100% Kotlin 打造的 Web 框架 Ktor,其輕量、語法簡潔易學是它的特色,非常適合用于網站、API 及微服務。從 IntelliJ IDEA 的插件市場安裝好 Ktor 插件后,就可以快速創建項目。接著從 API 規格設計出對應的 JSON 內容,再轉成 Kotlin Data Class。為了讓所有 RSS 文章能存儲在數據庫里,圣佑也演示了如何集成同樣由 JetBrains 團隊打造的 Exposed 框架,并使用 H2 數據庫來存儲 RSS 數據。最后,在配置好項目的依賴后,開始解析 Kotlin 官方博客的 RSS 文件,整理并排序后回傳 JSON 給前端讀取。
接著由禹昂接手介紹 KMM。禹昂首先說明 KMM 的原理及工作方式,通過 Kotlin Multiplatform 的架構,以 Common、Android 及 iOS 三種不同 SourceSet 打包出不同的產物即可跨平臺。為了簡化開發工作,Kotlin 團隊推出適用于 macOS Android Studio KMM 插件,安裝后即可快速創建 KMM 項目,并可直接從 Android Studio 編譯兩個平臺的代碼并啟動模擬器預覽。接著,禹昂從多平臺依賴配置、expect/actual 聲明與實現、common 層聲明的 Data Class、集成 Ktor HTTP Client、suspend 式的網絡請求及 UI 代碼等主題做演示,讓大家迅速了解 KMM 的實現方式、開發生態及現階段的優缺點。
演示完后的問答環節非常熱烈,在這邊將同學們的提問整理如下:
問答
Q. KMM 的性能如何?
禹昂:KMM 在 Android 平臺上跟原本的開發方式沒有太大的部份,在性能上沒有太大的區別。不過在 iOS 平臺上,因為整個跟 Objective-C 的 Runtime、垃圾回收、對象分配器都是不一樣的,所以會有些差別,但目前還沒有詳細跟 Objective-C 對比的數據。自 Kotlin 1.4 發布后可以啟用一個實驗性的對象分配器,經我自己本地測試可以提升不少性能,但還需時間完善,大家有興趣的話可以關注下。
Q. KMM 國內有公司在用嗎?
禹昂:目前攜程有在用,一些功能也已經上線了,目前是以邏輯性的功能為主。
Q. Native 的文件系統現在如何?
禹昂:目前還是在用平臺相關的 API,未來 kotlinx-io 庫有計劃會重構來支持多平臺的文件 IO。
Q. Ktor 有沒有計劃替代 Spring?
圣佑:Ktor 和 Spring 的設計理念不同,所以我覺得兩者不是一種替代的關系,而是應該將 Ktor 視為是 Spring 之外的新選擇,是一種更輕量、不依賴 Annotation 的方案。若你原本就是 Android 開發者,那 Ktor 也是從 Mobile 轉到 Backend 時,一個比較簡單易上手的選擇。對于一些小型服務來說,許多 Android 開發者就能自己獨立完成 Mobile 及 Backend API。
Q. Compose + Kotlin Native 有這個可能嗎?
禹昂:這個要等官方支持。我覺得后面官方會支持,不過這中間要搞定許多跨語言交互的問題。
Q. Ktor 有稍重的后端 Demo 嗎?
圣佑:可以參考 Ktor 官方文檔里的系列示例。
相信大家看完兩人的實作后,對于 KMM 及 Ktor 這兩種技術有更深入的了解。而從兩人通力合作的過程中,也能一窺前后端串接的技巧,對全端開發會有更深刻的體認。希望本次網絡研討會的內容對大家有幫助,我們下次見!
歷
Kotlin Multiplatform Mobile 現已推出 Alpha 版本
史
網絡研討會:Flutter x Ktor 打造跨平臺全端應用
文
mPaaS 插件正式上架 Jetbrains Market Place
章
Space-集成的團隊協作環境,現已正式發布!
評論comment