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