日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文快速帶您了解 KMM、Compose 和 Flutter 的現(xiàn)狀 | 開發(fā)者說·DTalk

谷歌開發(fā)者 ? 來源:未知 ? 2022-12-23 20:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文原作者: 戀貓de小郭,原文發(fā)布于: GSYTech

又到了喜聞樂見的環(huán)節(jié),「本篇主要是科普 KMM、Compose 和 Flutter 的最新現(xiàn)狀」,對于 Compose 和 Flutter 大家可能并不陌生,但是對于 KMM 也許會存在疑惑,KMM 全稱 Kotlin Multiplatform Mobile,顧名思義它是用 Kotlin 實(shí)現(xiàn)的跨平臺框架,那為什么今天突然會聊到它?

起因如下圖所示,最近有人提及了 KMM,并且用了 "變天" 的詞匯,頓時就勾起了我的興趣,因為 KMM 這些年來一直 "不溫不火",可以說很多使用 Kotlin 開發(fā)的 "Androider" 對它都很陌生,難道最近它又有了什么突破性的進(jìn)展?

而在求證一番之后,原來起因來自 10 月初「Android 官方宣布Jetpack 開始要支持 KMM」了,目前Collections和DataStore已經(jīng)可以通過依賴-dev01版本在多平臺上使用,同時「KMM 進(jìn)入 Beta 版本階段」。 「所以目前 KMM 變不了天,至少它還處于 Beta 階段,但是 Jetpack 開始支持 KMM 是個很好的消息,這意味著 KMM 的社區(qū)支持有了官方保證」。
好了,介紹完起因,接下來開始進(jìn)入今天的主題,什么是 KMM、Compose 和 Flutter。

KMM

Kotlin Multiplatform Mobile – KMM 是基于 Kotlin 并應(yīng)用在 iOS 和 Android 的一種跨平臺技術(shù),它的特點(diǎn)是結(jié)合了跨平臺和原生開發(fā)協(xié)同開發(fā)的模式,如下圖所示,簡單的理解就是:「從純原生開發(fā)變成了 KMM + 原生 UI 開發(fā)」。27cc7628-82bf-11ed-bfe3-dac502259ad0.png

「使用 KMM 可以把您的業(yè)務(wù)邏輯和基建部分的能力跨平臺化」,例如網(wǎng)絡(luò)請求、數(shù)據(jù)存儲,狀態(tài)上報等模塊通過 KMM 實(shí)現(xiàn) Android 和 iOS 通用,例如前面介紹的 DataStore 就可以在 iOS 上支持使用。

在官方的介紹里 KMM 的早期使用者有百度、Netflix、VMWare、Philips 等,目前收到的反饋都挺不錯,而 Beta 版本也意味著現(xiàn)在 KMM 已經(jīng)具備了使用的基礎(chǔ)。

那您可能會好奇,KMM 支持 Web 嗎?

聊到這個話題就很有趣,從我的角度上看,我會說 Kotlin Multiplatform 支持,但是 KMM 不支持。 如果您安裝過 KMM 插件和創(chuàng)建過 KMM 項目,您會看到 KMM 不管是從 logo 還是項目創(chuàng)建都只有 Android 和 iOS,但是,Kotlin Multiplatform 是支持 Web 的,通過 Kotlin JS。

如果接觸 Kotlin Multiplatform 比較早,那您可能還聽說過 KMP,KN 之類的縮寫,那它們和 KMM 又是什么關(guān)系?簡單來說:

  • KMP 一般指的就是 Kotlin Multiplatform,我依稀記得 KMP 這個概念是在 Kotlin 1.2 的時候被提出,可以將 Kotlin 運(yùn)行到特定平臺的 JVM 和 JS 代碼上
  • KN 一般指的是 Kotlin Native,KN 屬于是將 Kotlin 編譯為 Native 二進(jìn)制文件的技術(shù),甚至可以在沒有虛擬機(jī)的情況下運(yùn)行,例如 KMM 上的 iOS 就是使用了 KN 的能力
  • KMM 是利用了 JVM 和 KN 能力實(shí)現(xiàn)的針對 Android 和 iOS 平臺的 Kotlin 框架: Android (Kotlin/JVM) 和 iOS (Kotlin/Native)

2832b1d6-82bf-11ed-bfe3-dac502259ad0.png

另外還有 Kotlin JS 用于 Web 平臺,「所以 KMP 可以看作是大集合,而 KMM 是其中針對 Android 和 iOS 的支持,另外通過 Kotlin Native 和 Kotlin JS 也可以支持拓展到 PC 端和 Web 端」。

那么到這里您應(yīng)該理解:「KMM 主要是用來寫跨平臺邏輯,涉及到 UI 部分您還是需要通過原生實(shí)現(xiàn)」,如果您從另外一個角度看,用 KMM 對于 Android 開發(fā)來說幾乎等于白送的能力,因為它只需要 Kotlin。
至少 Compose 您還需要適應(yīng)下響應(yīng)式開發(fā)模式。

那或者有人就問:那 KMM 的意義何在? 事實(shí)上還真有,「KMM 在 App 的基建上會很實(shí)用,比如做數(shù)據(jù)上報,崩潰統(tǒng)計,數(shù)據(jù)分析等等」,純邏輯的跨平臺不影響 UI 部分,目前也是在這些場景上 KMM 應(yīng)用較多。
另外還有人問我,KMM 可以用 Java 開發(fā)嗎?嗯,這是個好問題,下次不要再問了。
當(dāng)然,KMM 也存在一些局限,比如使用 ViewModel 和協(xié)程如何在 iOS 上運(yùn)行的問題,不過社區(qū)針對這部分也有一些第三方支持,所以對于 KMM 的未來還是值得期待。

Compose

Compose 相信大家不會陌生,「其實(shí) Compose 也可以分兩部分看待,Jetpack Compose 和 Compose Multiplatform」:
  • 由 Android 官方維護(hù)的 Jetpack Compose

  • 由 JetBrains 維護(hù)的compose-jb實(shí)現(xiàn)的 Compose Multiplatform

「如果說 KMM 是用于實(shí)現(xiàn)跨平臺的業(yè)務(wù)邏輯,那么 Compose Multiplatform 就是專注于跨平臺 UI 上的支持」,那 KMM 和 Compose Multiplatform 是什么關(guān)系呢? 從項目角度看,compose-jb 和 KMM 其實(shí)沒有關(guān)系,因為 KMM 還在 beta,但是 Compose Multiplatform 正式發(fā)布已經(jīng)接近一年的時間。
但是要說完全沒關(guān)系顯然是不可能,畢竟 Kotlin Native 和 Kotlin JS 的能力其實(shí)在 Compose Multiplatform 里很重要。

當(dāng)然,如下圖所示,Compose Multiplatform 在跨平臺開發(fā)體驗上還是有所區(qū)別,「Compose 目前是通過多個模塊不同實(shí)現(xiàn)來支持多平臺,所以目前 Jetpack Compose 和 Compose Multiplatform 有一些 "割裂"」,特別是在 Web 端,想要達(dá)到 Flutter 一樣共享代碼的比例還需要繼續(xù)努力。

2845ad40-82bf-11ed-bfe3-dac502259ad0.png ?
PS: 圖比較老,iOS 其實(shí)目前已經(jīng)進(jìn)入實(shí)驗階段, androidx.compose.ui.main.defaultUIKitMain 相關(guān)的支持距離正式發(fā)布可以期待。

另外 Compose Multiplatform 還有的問題就是缺少插件社區(qū),這其實(shí)是跨平臺領(lǐng)域必不可少的配置:「前端有 npm、Flutter 有 pub,您可以通過它們的中央官網(wǎng)搜索您想要的庫,查看它們的熱度,版本,兼容和使用量等等信息,設(shè)置官方認(rèn)證和安全保障,但是 Maven 時代在這方面一直很弱」。

另一方面 Compose 的優(yōu)勢也很明顯:

  • Kotlin 生態(tài)
  • Android 開發(fā)友好
  • 打包體積增長不大,代碼壓縮比例高
  • 性能不錯,compose-android 和 compose-desktop 都使用 Skia
「而隨著 Jetpack 開始支持 KMM,那么 Compose Multiplatform 的社區(qū)支持力度將得到進(jìn)一步提升,因為變相 Compose Multiplatform 也可以支持 Jetpack」。 至于前面所說的 "割裂" 問題,目前可以看到官方也在有序推進(jìn),其中就有 desktop 的部分代碼已經(jīng)挪到了androidx 上,從這里看或者統(tǒng)一的 Compose lib 并不遙遠(yuǎn)。288993ac-82bf-11ed-bfe3-dac502259ad0.png
PS: JetBrains 目前就已經(jīng)將 Toolbox 應(yīng)用通過 Compose Multiplatform 實(shí)現(xiàn)并且發(fā)布使用。

Flutter

現(xiàn)在 Flutter 已經(jīng)是 3.3 的版本,F(xiàn)lutter 的特點(diǎn)就是跨平臺,因為它并沒有自己的平臺,同時它也是 single codebase 的跨平臺實(shí)現(xiàn)。

291106c0-82bf-11ed-bfe3-dac502259ad0.png ?

關(guān)于 Flutter 和其他框架的對比或者使用數(shù)據(jù)就不多贅述,這里介紹一些其他比較有意思的話題。

1. FlutterVSOther量化對比 2. 國內(nèi)大廠應(yīng)用在移動端Flutter框架使用分析 3. 國內(nèi)大廠在移動端跨平臺的框架接入分析

「在 Jetbrains 的開源項目里有一個叫skiko的項目」,Skiko (Kotlin 的 Skia 的縮寫) 是一個圖形庫,它支持 Kotlin/JVM、Kotlin/JS、Kotlin/Native 等相關(guān)實(shí)現(xiàn),目前支持有:
  • Kotlin/JVM - Linux、Windows、macOS、Android
  • Kotlin/JS - web
  • Kotlin/Native - iOS 、macOS
如果從這個角度看 Compose Multiplatform 未來的方向會和 Flutter 很像,甚至因為 Flutter 走過更多的坑,所以 Compose Multiplatform 在對接 Skia 上可以有更多的參考。
其實(shí)未來 Linux、Windows 等平臺也完全可以脫離 JVM 通過 Kotlin/Native + Skiko 實(shí)現(xiàn)支持,只是維護(hù)成本會變高。

「Flutter 在自建渲染引擎上其實(shí)已經(jīng)越來越激進(jìn),因為直接使用 Skia 已經(jīng)無法滿足日益增長的 Bug 和性能極限,所以官方開始了自研渲染引擎 Impeller」。 因為 Flutter 團(tuán)隊現(xiàn)在出現(xiàn)問題每次都要和 Skia 團(tuán)隊溝通,然后等跟進(jìn),這樣的節(jié)奏太慢了,從官方的更新日志上就可以看出目前 Flutter 的迭代速度依然很夸張。292120b4-82bf-11ed-bfe3-dac502259ad0.png

所以「這次自研的 Impeller 本質(zhì)上是為了解決 Skia 需要運(yùn)行時遇到的問題,Impeller 可以直接在編譯器就完成 GLSL 和 MSL,不需要 SKSL 從而提高了性能和運(yùn)行時的穩(wěn)定性」,目前優(yōu)先在 iOS 平臺上開始支持,配合 Metal 做優(yōu)化,后續(xù)如果沒問題也會同步支持 Android 和 Vulkan。

從這個角度猜測,F(xiàn)lutter 在 Skia 遇到的問題 Compose Multiplatform 也很可能會遇上,而如果后續(xù) Impeller 項目進(jìn)展順利,那它或者并不會局限在 Flutter,也許也可以拓展支持到 Compose Multiplatform 上。

其實(shí)自研發(fā)引擎并不奇怪,隨著項目的發(fā)展和深入,很多底層問題沒辦法快速推進(jìn)就會反推自研,例如Hermes 在 RN 0.7 成為默認(rèn) Engine也是類似問題的體現(xiàn),「自研底層屬于是一個負(fù)責(zé)任的開源團(tuán)隊的必經(jīng)之路」。

最后

今天這篇文章的內(nèi)容更多的是科普性質(zhì)而非技術(shù)性,主要是針對目前 KMM、Compose 和 Flutter 的現(xiàn)狀做一個陳述,其實(shí)很多時候它們之間并不沖突,但是作為開發(fā)者很經(jīng)常就像開頭一樣,用 "對立" 的角度來看 A 火了 B 就要掛,這種心態(tài)大可不必。


長按右側(cè)二維碼

查看更多開發(fā)者精彩分享

294ce884-82bf-11ed-bfe3-dac502259ad0.png

"開發(fā)者說·DTalk" 面向295fd822-82bf-11ed-bfe3-dac502259ad0.png中國開發(fā)者們征集 Google 移動應(yīng)用 (apps & games)?相關(guān)的產(chǎn)品/技術(shù)內(nèi)容。歡迎大家前來分享您對移動應(yīng)用的行業(yè)洞察或見解、移動開發(fā)過程中的心得或新發(fā)現(xiàn)、以及應(yīng)用出海的實(shí)戰(zhàn)經(jīng)驗總結(jié)和相關(guān)產(chǎn)品的使用反饋等。我們由衷地希望可以給這些出眾的中國開發(fā)者們提供更好展現(xiàn)自己、充分發(fā)揮自己特長的平臺。我們將通過大家的技術(shù)內(nèi)容著重選出優(yōu)秀案例進(jìn)行谷歌開發(fā)技術(shù)專家 (GDE)?的推薦。

2978c33c-82bf-11ed-bfe3-dac502259ad0.gif?點(diǎn)擊屏末||即刻報名參與 "開發(fā)者說·DTalk"

2987d804-82bf-11ed-bfe3-dac502259ad0.png

299c9cb2-82bf-11ed-bfe3-dac502259ad0.gif

2a27be14-82bf-11ed-bfe3-dac502259ad0.png


原文標(biāo)題:一文快速帶您了解 KMM、Compose 和 Flutter 的現(xiàn)狀 | 開發(fā)者說·DTalk

文章出處:【微信公眾號:谷歌開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 谷歌
    +關(guān)注

    關(guān)注

    27

    文章

    6259

    瀏覽量

    112004

原文標(biāo)題:一文快速帶您了解 KMM、Compose 和 Flutter 的現(xiàn)狀 | 開發(fā)者說·DTalk

文章出處:【微信號:Google_Developers,微信公眾號:谷歌開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    建言有禮 | RA 生態(tài)社區(qū)再次升級,共筑更懂開發(fā)者的 RA 家園!

    效解決的技術(shù)痛點(diǎn)、更豐富的生態(tài)體驗,我們決定:把決定權(quán)交給每位用戶!即日起,RA生態(tài)社區(qū)正式面向全體開發(fā)者、工程師、合作伙伴公開征集升級建議,
    的頭像 發(fā)表于 04-15 17:43 ?671次閱讀
    建言有禮 | RA 生態(tài)社區(qū)再次升級,共筑更懂<b class='flag-5'>開發(fā)者</b>的 RA 家園!

    TikTok使用Jetpack Compose提升開發(fā)者工作效率

    TikTok 是個全球短視頻平臺,以海量的用戶群體和極具創(chuàng)新性的功能而聞名。其團(tuán)隊不斷為用戶發(fā)布更新、進(jìn)行實(shí)驗并上線新功能。在保持高速迭代與應(yīng)對技術(shù)債的雙重挑戰(zhàn)下,TikTok Android 團(tuán)隊選擇了 Jetpack Compose。
    的頭像 發(fā)表于 03-31 09:11 ?426次閱讀

    2025華為開發(fā)者大賽暨開發(fā)者年度會議成功舉辦

    12月27日-12月28日,以“成就AI原生時代先鋒開發(fā)者”為主題的2025華為開發(fā)者大賽暨開發(fā)者年度會議在上海華為練秋湖研發(fā)中心舉辦。本次會議旨在匯聚先鋒開發(fā)力量,搭建開放共贏的生態(tài)
    的頭像 發(fā)表于 12-31 13:32 ?1085次閱讀

    探秘 CYSBSYSKIT - DEV - 01 快速物聯(lián)網(wǎng)連接開發(fā)者套件

    快速物聯(lián)網(wǎng)連接開發(fā)者套件憑借其獨(dú)特的設(shè)計和強(qiáng)大的功能,為開發(fā)者們搭建了個便捷的開發(fā)平臺。本文將詳細(xì)介紹該套件的
    的頭像 發(fā)表于 12-21 15:35 ?917次閱讀

    2025開源鴻蒙開發(fā)者激勵計劃正式啟動

    11月21日,2025開放原子開發(fā)者大會盛大啟幕,聚焦“AI共智,開源共享”主題,吸引了來自全球的開發(fā)者、企業(yè)技術(shù)領(lǐng)袖、社區(qū)維護(hù)及高??蒲辛α繀?。作為大會的重要組成部分,開源鴻蒙技術(shù)分論壇同期
    的頭像 發(fā)表于 11-27 14:44 ?856次閱讀

    Flutter 移動端開發(fā):集成淘寶 API 實(shí)現(xiàn)商品數(shù)據(jù)實(shí)時展示 APP

    在電商蓬勃發(fā)展的當(dāng)下,移動端購物成為主流趨勢。對于開發(fā)者而言,利用 Flutter 構(gòu)建個能夠?qū)崟r展示淘寶商品數(shù)據(jù)的 APP,既能滿足用戶便捷獲取商品信息的需求,也能為電商業(yè)務(wù)拓展新的渠道
    的頭像 發(fā)表于 11-13 09:36 ?526次閱讀

    元服務(wù)發(fā)布配置開發(fā)者服務(wù)信息

    作為開發(fā)者的相關(guān)信息將面向元服務(wù)發(fā)布區(qū)域的用戶公開,其中客服聯(lián)系方式可能會提供給用戶,用于咨詢相關(guān)問題。 登錄AppGallery Connect,點(diǎn)擊“APP與元服務(wù)”。 選擇要發(fā)布的元服務(wù)
    發(fā)表于 10-31 17:58

    2025開放原子開發(fā)者大會11月啟幕

    開發(fā)者年度盛會即將登場!2025開放原子開發(fā)者大會將于11月21-22日,在北京北人亦創(chuàng)國際會展中心盛大召開。大會以“切為了開發(fā)者”為主題,匯聚全球開源智慧——國內(nèi)外優(yōu)秀
    的頭像 發(fā)表于 10-24 14:05 ?1155次閱讀

    NVIDIA DRIVE AGX Thor開發(fā)者套件重磅發(fā)布

    這款由 NVIDIA DriveOS 7 驅(qū)動的開發(fā)者套件能夠幫助開發(fā)者們打造出更安全的智能汽車和交通解決方案。
    的頭像 發(fā)表于 09-04 11:20 ?1640次閱讀

    曙光網(wǎng)絡(luò)SugonRI開發(fā)者社區(qū)正式上線

    在人工智能與工業(yè)深度融合的大潮中,工業(yè)軟件正在成為推動產(chǎn)業(yè)升級的關(guān)鍵引擎。為了讓更多開發(fā)者快速掌握工業(yè)級編程技術(shù)、共享行業(yè)實(shí)踐成果,曙光網(wǎng)絡(luò)正式推出開發(fā)者社區(qū)——曙睿(SugonRI)開發(fā)者
    的頭像 發(fā)表于 09-04 09:58 ?1184次閱讀

    Android Studio中的Gemini全面支持Dart和Flutter開發(fā)

    在 Android Studio 中創(chuàng)建 Android 應(yīng)用的 Flutter 開發(fā)者將迎來次重大的飛躍: Android Studio 中的 Gemini 已全面支持 Dart
    的頭像 發(fā)表于 08-06 13:52 ?1541次閱讀
    Android Studio中的Gemini全面支持Dart和<b class='flag-5'>Flutter</b><b class='flag-5'>開發(fā)</b>

    迅龍軟件參加昇騰 AI?開發(fā)者創(chuàng)享日?廣東站,為開發(fā)者打造沉浸式實(shí)操體驗

    7月18日,線下頂尖人才匯聚的開發(fā)者盛會——昇騰AI開發(fā)者創(chuàng)享日?廣東站在廣州舉行?;顒右浴皠?chuàng)未來享非凡”為主題,聚焦廣東本地產(chǎn)業(yè)特點(diǎn),分享前沿AI創(chuàng)新技術(shù),搭建生態(tài)交流平臺,幫助開發(fā)者全面
    的頭像 發(fā)表于 07-23 17:18 ?1453次閱讀
    迅龍軟件參加昇騰 AI?<b class='flag-5'>開發(fā)者</b>創(chuàng)享日?廣東站,為<b class='flag-5'>開發(fā)者</b>打造沉浸式實(shí)操體驗

    HDC 2025開發(fā)者主題演講精彩回顧

    開發(fā)者解決方案升級等內(nèi)容,同時多位生態(tài)伙伴分享基于HarmonyOS的最新開發(fā)實(shí)踐,為開發(fā)者提供切實(shí)可行的創(chuàng)新思路,進(jìn)步推動鴻蒙生態(tài)的繁榮發(fā)展。會上還舉行了HarmonyOS極客馬拉
    的頭像 發(fā)表于 07-09 11:20 ?1508次閱讀

    使用 Flutter SDK 3.27.4構(gòu)建HarmonyOS應(yīng)用

    /flutter_fluttergit checkout -b oh-3.27.4-dev origin/oh-3.27.4-dev ? 下載下來之后就可以配置開發(fā)環(huán)境啦。 配置開發(fā)環(huán)境 配置好后
    的頭像 發(fā)表于 06-11 09:15 ?1147次閱讀

    Flutter on Raspberry Pi:從入門到精通的完整指南!

    Flutter。通過遵循本文中概述的步驟,你將獲得在樹莓派上設(shè)置Flutter的知識和信心。無論你是初學(xué)者還是經(jīng)驗豐富的Flutter開發(fā)者,本指南都將確保你對過程有清晰的
    的頭像 發(fā)表于 06-06 15:37 ?1758次閱讀
    <b class='flag-5'>Flutter</b> on Raspberry Pi:從入門到精通的完整指南!
    富宁县| 连城县| 黄石市| 方山县| 平顶山市| 孝义市| 皋兰县| 巴马| 喀喇沁旗| 攀枝花市| 东明县| 钟祥市| 临城县| 茶陵县| 左云县| 河南省| 东乡族自治县| 黎平县| 平定县| 济南市| 衡山县| 越西县| 旬阳县| 宣城市| 同心县| 清原| 乡宁县| 保定市| 沙河市| 尼木县| 阳朔县| 桂平市| 遂平县| 天台县| 金乡县| 读书| 齐河县| 华池县| 阿拉善右旗| 长阳| 北宁市|