日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

JetBrains聯合谷歌搞事情!首發(fā)穩(wěn)定版Kotlin跨平臺開發(fā)框架!

來源: 責編: 時間:2023-11-03 09:17:35 323觀看
導讀整理丨諾亞出品 | 51CTO技術棧(微信號:blog51cto)近來,傳聞中一直在和谷歌“搞事”的JetBrains為跨平臺領域帶來了一個突破性的消息:發(fā)布了Kotlin Multiplatform的第一個穩(wěn)定版本,支持跨 iOS、Android、桌面、Web 和服務器

整理丨諾亞s5Y28資訊網——每日最新資訊28at.com

出品 | 51CTO技術棧(微信號:blog51cto)s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

近來,傳聞中一直在和谷歌“搞事”的JetBrains為跨平臺領域帶來了一個突破性的消息:發(fā)布了Kotlin Multiplatform的第一個穩(wěn)定版本,支持跨 iOS、Android、桌面、Web 和服務器共享代碼。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

提到跨平臺開發(fā),大家比較熟悉的可能是Flutter、React Native等知名框架。這個新生代又是何方神圣?s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

其實有熟悉Android開發(fā)的朋友可能了解過Kotlin Multiplatform Mobile(KMM)。它是Kotlin Multiplatform(KMP)的組成部分,在2020年就基于Kotlin 1.4發(fā)布了第一個版本,但由于一直處在實驗階段,因此了解和使用的人都比較少。如今在JetBrains和谷歌的合力支持下,Kotlin Multiplatform終于開始在跨平臺領域嶄露頭角。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

Netflix開發(fā)者David Henry和Mel Yahya表示,“不同的技術有時會針對特定平臺的應用開發(fā)進行抽象化或完全取代,而Kotlin Multiplatform則為現有的特定平臺提供了有力的技術補充,同時能夠取代與平臺無關的業(yè)務邏輯。對我們而言,Kotlin Multiplatform是一款工具箱中的新工具,并非會取代整個工具箱。”s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

圖源:JetBrains官方網站圖源:JetBrains官方網站s5Y28資訊網——每日最新資訊28at.com

1、放棄Java,選擇Kotlin

s5Y28資訊網——每日最新資訊28at.com

Kotlin Multiplatform顧名思義,主要基于Kotlin語言。Kotlin是由JetBrains開發(fā)的一種JVM(Java 虛擬機)語言,并被谷歌采用作為Android開發(fā)的主要語言。既然Java已經是為跨平臺代碼而設計的,那么Kotlin Multiplatform增加了什么?s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

答案是Kotlin不僅僅是一種JVM語言。Kotlin/Native使用MinGW (Windows的GCC工具鏈)和Android NDK,編譯為macOS、iOS、Linux、Windows的自包含可執(zhí)行文件。Kotlin/JS將Kotlin轉換為JavaScript。Kotlin Wasm仍處于實驗階段,可編譯為WebAssembly。   s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

使用Kotlin而不是Java的另一個原因是它的語言特性,包括lambda表達式、擴展函數、類型推斷、空安全等。Kotlin沒有checked異常,因為這些不會提高生產力或代碼質量。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

Kotlin Multiplatform是一種跨多平臺共享非GUI代碼的技術。它解決了代碼共享的兩個常見問題,一則需要在項目中包含的一些平臺之間共享某些代碼,二則需要訪問特定平臺的API。這也成就了Kotlin Multiplatform的一大亮點:在多平臺之間高效重用代碼的同時保留原生編程的優(yōu)勢。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

圖片圖片s5Y28資訊網——每日最新資訊28at.com

Kotlin Multiplatform 中的 Expect 和 Actual,滿足了調用原生平臺 API 的需求s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

API 問題通過Expect和Actual聲明機制得到解決。expect 關鍵字用于定義一個多平臺通用的聲明,即該聲明在所有平臺上都可用,并且需要在特定平臺上實現。actual 關鍵字通常與 expect 關鍵字配合使用,用于定義多平臺通用的接口和函數,從而允許在不同的平臺上使用相同的 API。JetBrains建議只對平臺API使用expect/actual,否則使用普通接口。   s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

2022 年的一項調查顯示,Kotlin 多平臺應用程序的代碼共享率高達 63%2022 年的一項調查顯示,Kotlin 多平臺應用程序的代碼共享率高達 63%s5Y28資訊網——每日最新資訊28at.com

2、邏輯和UI共享均實現,與Flutter競爭加劇

s5Y28資訊網——每日最新資訊28at.com

Kotlin Multiplatform用于非GUI代碼,但有一個相關的項目Compose Multiplatform,用于創(chuàng)建共享的UI。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

Compose Multiplatform是基于谷歌的Jetpack Compose的跨平臺共享UI聲明式框架。據悉,通過將Kotlin Multiplatform與Compose Multiplatform相結合,開發(fā)者不僅將獲得更高的自由度,還可以在Kotlin中實現高達100%的代碼庫共享。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

此前KMM主要實現的是共享邏輯,UI層的實現還是建議平臺各自去處理,而在Compose Multiplatform加入后,成為了邏輯和UI都可以實現共享的結果。再加上有Android官方推薦的Buff加身,發(fā)布穩(wěn)定版后與Flutter的競爭必然會加劇。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

當前Compose Multiplatform在桌面平臺、macOS、Linux和Windows上也很穩(wěn)定,但在iOS上是Alpha版本,在Web上是實驗性的。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

如果Compose Multiplatform尚未準備就緒,開發(fā)者如何支持iOS呢?這可以通過使用SwiftUI實現,SwiftUI是蘋果的官方UI設計語言,它基于聲明性代碼。有一些代碼示例正是采用了這種方法。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

JetBrains還表示,他們的目標是在2024年發(fā)布面向iOS的Compose Multiplatform測試版,Kotlin/Wasm也在積極開發(fā)中。目前Kotlin Multiplatform和Compose Multiplatform均可免費使用。s5Y28資訊網——每日最新資訊28at.com

3、全球大廠紛紛擁抱:KMM好用在哪里

s5Y28資訊網——每日最新資訊28at.com

面向日趨上升的跨平臺開發(fā)需求,Kotlin Multiplatform穩(wěn)定版的首發(fā)無疑是一個好消息。保持代碼共享的同時又保留了一定的原生靈活性,允許根據特定平臺的需求進行定制和擴展,這讓KMP成為了一個極有潛力的開發(fā)框架,為開發(fā)者提供了更多的選擇空間。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

根據JetBrains官方頁面,Kotlin Multiplatform已經被麥當勞、Netflix和VMWare等公司使用。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

今年5月,麥當勞全球移動應用平臺技術主管Ryan Sander和首席 Android 開發(fā)人員Austin Keith甚至專門撰寫了一篇技術博客來解釋為什么他們在諸多解決方案中選擇了Kotlin Multiplatform Mobile(KMM)。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

在團隊選型開始,麥當勞移動技術團隊想要的就是“一個響應迅速的原生 UI,與平臺保持同步,并避免重復開發(fā)業(yè)務邏輯”。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

“在決定是否在軟件堆棧中使用KMM時,你應該考慮開發(fā)階段以及應用程序遵循或將要遵循的設計范式。如果你的應用程序是圍繞依賴注入設計或使用干凈的體系結構設計的,那么KMM將非常適合,因為它可以被視為另一個領域層,具有兩個平臺共享的優(yōu)勢。”s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

在實踐過程中,他們發(fā)現KMM的主要優(yōu)勢集中在以下幾點:s5Y28資訊網——每日最新資訊28at.com

  • 為業(yè)務邏輯和共享功能(如網絡、存儲和分析)提供單一代碼庫。
  • 平臺的業(yè)務邏輯可以在一個位置處理,從而減輕開發(fā)人員的測試負擔,因為可以同時處理兩個平臺的單元測試。
  • 對于集成/插樁測試,Android和iOS 項目可以與KMM模塊一起包含在內,從而允許通過代碼庫中的本機仿真、仿真或硬件來測試數據庫和網絡。

s5Y28資訊網——每日最新資訊28at.com

不過在集成KMM的過程中,他們也面臨一些挑戰(zhàn)。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

其一,iOS開發(fā)人員可能會發(fā)現在KMM環(huán)境中工作很困難,因為它需要Kotlin語言的知識。不過,如果你有其他語言的開發(fā)基礎,比如Java、OC、Swift,你可以用一周的時間學習熟悉Kotlin語法并開始項目實戰(zhàn)。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

其二,并非所有庫都有基于Kotlin的等效項,但這可以通過使用expect/actual代碼范式的特定平臺的代碼來解決。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

其三,使用常用第三方庫的Kotlin版本時,可能會缺少功能。畢竟這還是一門新技術,隨著技術發(fā)展?jié)u趨成熟,這個問題可能會得到解決。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

其四,使用協程/異步方法調用的庫可能會由于舊Kotlin內存模型的問題而崩潰。在大多數情況下,更新到最新版本的Kotlin可以防止這種情況發(fā)生。 s5Y28資訊網——每日最新資訊28at.com

4、寫在最后:開發(fā)者又多了一個理想之選

s5Y28資訊網——每日最新資訊28at.com

Kotlin Multiplatform 的首次用戶調查結果顯示,有Android背景的開發(fā)人員在使用Kotlin Multiplatform的開發(fā)人員中占絕大多數,8%的受訪者來自iOS背景,61.4%的受訪者有5年以上的開發(fā)經驗。比較出人意料的是,有16.3%的開發(fā)者使用這項技術來覆蓋全平臺,目的就是使其代碼盡可能通用。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

隨著Kotlin Multiplatform進入穩(wěn)定版本,開發(fā)者必然會更有信心將其應用于生產項目。JetBrains依然在進一步增強Kotlin Multiplatform、Compose Multiplatform以及相關工具功能,以支持這一技術組合成為在不同平臺之間共享代碼的理想之選。對開發(fā)者而言,工具箱中有了更多備選,或許會加速創(chuàng)意付諸現實的敘事節(jié)奏。s5Y28資訊網——每日最新資訊28at.com

s5Y28資訊網——每日最新資訊28at.com

參考鏈接:

https://devclass.com/2023/11/01/jetbrains-offers-first-stable-release-of-kotlin-multiplatform/s5Y28資訊網——每日最新資訊28at.com

https://www.jetbrains.com/zh-cn/kotlin-multiplatform/s5Y28資訊網——每日最新資訊28at.com

https://medium.com/mcdonalds-technical-blog/mobile-multiplatform-development-at-mcdonalds-3b72c8d44ebcs5Y28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-16760-0.htmlJetBrains聯合谷歌搞事情!首發(fā)穩(wěn)定版Kotlin跨平臺開發(fā)框架!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Rust編程基礎之函數和表達式

下一篇: 一次搞清Spring 、Spring Boot、Spring Web MVC、Spring WebFlux

標簽:
  • 熱門焦點
  • 5月安卓手機好評榜:魅族20 Pro奪冠

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年5月1日至5月31日,僅限國內市場。第一名:魅族20 Pro好評率:97.50%不得不感慨魅族老品牌還
  • CSS單標簽實現轉轉logo

    轉轉品牌升級后更新了全新的Logo,今天我們用純CSS來實現轉轉的新Logo,為了有一定的挑戰(zhàn)性,這里我們只使用一個標簽實現,將最大化的使用CSS能力完成Logo的繪制與動畫效果。新logo
  • 一篇聊聊Go錯誤封裝機制

    %w 是用于錯誤包裝(Error Wrapping)的格式化動詞。它是用于 fmt.Errorf 和 fmt.Sprintf 函數中的一個特殊格式化動詞,用于將一個錯誤(或其他可打印的值)包裝在一個新的錯誤中。使
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數據的地方,是數據源的一種,比如大家經常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數據,它既可以保
  • 2023年,我眼中的字節(jié)跳動

    此時此刻(2023年7月),字節(jié)跳動從未上市,也從未公布過任何官方的上市計劃;但是這并不妨礙它成為中國最受關注的互聯網公司之一。從2016-17年的抖音強勢崛起,到2018年的“頭騰
  • OPPO、vivo、小米等國內廠商Q2在印度智能手機市場份額依舊高達55%

    7月20日消息,據外媒報道,研究機構的報告顯示,在全球智能手機出貨量同比仍在下滑的大背景下,印度這一有潛力的市場也未能幸免,出貨量同比也有下滑,多家廠
  • 微軟發(fā)布Windows 11新版 引入全新任務欄狀態(tài)

    近日,微軟發(fā)布了Windows 11新版,而Build 22563更新主要引入了幾周前曝光的平板模式任務欄等,系統更流暢了。更新中,Windows 11加入了專門針對平板優(yōu)化的任務欄
  • 蘋果MacBook Pro 2021測試:仍不支持平滑滾動

    據10月30日9to5 Mac 消息報道,蘋果新的 14 英寸和 16 英寸 MacBook Pro 2021 上市后獲得了不錯的評價,亮點包括行業(yè)領先的性能,令人印象深刻的電池續(xù)航,精美豐
  • 北京:科技教育體驗基地開始登記

      北京“科技館之城”科技教育體驗基地登記和認證工作日前啟動。首批北京科技教育體驗基地擬于2023年全國科普日期間掛牌,后續(xù)還將開展常態(tài)化登記。  北京科技教育體驗基
Top 主站蜘蛛池模板: 林周县| 时尚| 博乐市| 五家渠市| 常州市| 临朐县| 桃园县| 平凉市| 若尔盖县| 巴彦淖尔市| 桦甸市| 台中市| 太康县| 台湾省| 金寨县| 大同市| 元朗区| 峨山| 象山县| 南和县| 武陟县| 遂川县| 宜黄县| 保康县| 荔浦县| 英德市| 武胜县| 衡阳市| 兴化市| 台安县| 佳木斯市| 诸暨市| 阿坝县| 潮安县| 盱眙县| 彭水| 凤台县| 巴中市| 肇源县| 荥经县| 张掖市|