AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

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

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

整理丨諾亞MqU28資訊網(wǎng)——每日最新資訊28at.com

出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)MqU28資訊網(wǎng)——每日最新資訊28at.com

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

Netflix開發(fā)者David Henry和Mel Yahya表示,“不同的技術(shù)有時(shí)會(huì)針對(duì)特定平臺(tái)的應(yīng)用開發(fā)進(jìn)行抽象化或完全取代,而Kotlin Multiplatform則為現(xiàn)有的特定平臺(tái)提供了有力的技術(shù)補(bǔ)充,同時(shí)能夠取代與平臺(tái)無關(guān)的業(yè)務(wù)邏輯。對(duì)我們而言,Kotlin Multiplatform是一款工具箱中的新工具,并非會(huì)取代整個(gè)工具箱?!?span style="display:none">MqU28資訊網(wǎng)——每日最新資訊28at.com

MqU28資訊網(wǎng)——每日最新資訊28at.com

MqU28資訊網(wǎng)——每日最新資訊28at.com

圖源:JetBrains官方網(wǎng)站圖源:JetBrains官方網(wǎng)站MqU28資訊網(wǎng)——每日最新資訊28at.com

1、放棄Java,選擇Kotlin

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

使用Kotlin而不是Java的另一個(gè)原因是它的語言特性,包括lambda表達(dá)式、擴(kuò)展函數(shù)、類型推斷、空安全等。Kotlin沒有checked異常,因?yàn)檫@些不會(huì)提高生產(chǎn)力或代碼質(zhì)量。MqU28資訊網(wǎng)——每日最新資訊28at.com

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

MqU28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片MqU28資訊網(wǎng)——每日最新資訊28at.com

Kotlin Multiplatform 中的 Expect 和 Actual,滿足了調(diào)用原生平臺(tái) API 的需求MqU28資訊網(wǎng)——每日最新資訊28at.com

MqU28資訊網(wǎng)——每日最新資訊28at.com

API 問題通過Expect和Actual聲明機(jī)制得到解決。expect 關(guān)鍵字用于定義一個(gè)多平臺(tái)通用的聲明,即該聲明在所有平臺(tái)上都可用,并且需要在特定平臺(tái)上實(shí)現(xiàn)。actual 關(guān)鍵字通常與 expect 關(guān)鍵字配合使用,用于定義多平臺(tái)通用的接口和函數(shù),從而允許在不同的平臺(tái)上使用相同的 API。JetBrains建議只對(duì)平臺(tái)API使用expect/actual,否則使用普通接口。   MqU28資訊網(wǎng)——每日最新資訊28at.com

MqU28資訊網(wǎng)——每日最新資訊28at.com

2022 年的一項(xiàng)調(diào)查顯示,Kotlin 多平臺(tái)應(yīng)用程序的代碼共享率高達(dá) 63%2022 年的一項(xiàng)調(diào)查顯示,Kotlin 多平臺(tái)應(yīng)用程序的代碼共享率高達(dá) 63%MqU28資訊網(wǎng)——每日最新資訊28at.com

2、邏輯和UI共享均實(shí)現(xiàn),與Flutter競(jìng)爭(zhēng)加劇

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)前Compose Multiplatform在桌面平臺(tái)、macOS、Linux和Windows上也很穩(wěn)定,但在iOS上是Alpha版本,在Web上是實(shí)驗(yàn)性的。MqU28資訊網(wǎng)——每日最新資訊28at.com

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

根據(jù)JetBrains官方頁面,Kotlin Multiplatform已經(jīng)被麥當(dāng)勞、Netflix和VMWare等公司使用。MqU28資訊網(wǎng)——每日最新資訊28at.com

MqU28資訊網(wǎng)——每日最新資訊28at.com

今年5月,麥當(dāng)勞全球移動(dòng)應(yīng)用平臺(tái)技術(shù)主管Ryan Sander和首席 Android 開發(fā)人員Austin Keith甚至專門撰寫了一篇技術(shù)博客來解釋為什么他們?cè)谥T多解決方案中選擇了Kotlin Multiplatform Mobile(KMM)。MqU28資訊網(wǎng)——每日最新資訊28at.com

MqU28資訊網(wǎng)——每日最新資訊28at.com

在團(tuán)隊(duì)選型開始,麥當(dāng)勞移動(dòng)技術(shù)團(tuán)隊(duì)想要的就是“一個(gè)響應(yīng)迅速的原生 UI,與平臺(tái)保持同步,并避免重復(fù)開發(fā)業(yè)務(wù)邏輯”。MqU28資訊網(wǎng)——每日最新資訊28at.com

MqU28資訊網(wǎng)——每日最新資訊28at.com

“在決定是否在軟件堆棧中使用KMM時(shí),你應(yīng)該考慮開發(fā)階段以及應(yīng)用程序遵循或?qū)⒁裱脑O(shè)計(jì)范式。如果你的應(yīng)用程序是圍繞依賴注入設(shè)計(jì)或使用干凈的體系結(jié)構(gòu)設(shè)計(jì)的,那么KMM將非常適合,因?yàn)樗梢员灰暈榱硪粋€(gè)領(lǐng)域?qū)樱哂袃蓚€(gè)平臺(tái)共享的優(yōu)勢(shì)?!?span style="display:none">MqU28資訊網(wǎng)——每日最新資訊28at.com

MqU28資訊網(wǎng)——每日最新資訊28at.com

在實(shí)踐過程中,他們發(fā)現(xiàn)KMM的主要優(yōu)勢(shì)集中在以下幾點(diǎn):MqU28資訊網(wǎng)——每日最新資訊28at.com

  • 為業(yè)務(wù)邏輯和共享功能(如網(wǎng)絡(luò)、存儲(chǔ)和分析)提供單一代碼庫。
  • 平臺(tái)的業(yè)務(wù)邏輯可以在一個(gè)位置處理,從而減輕開發(fā)人員的測(cè)試負(fù)擔(dān),因?yàn)榭梢酝瑫r(shí)處理兩個(gè)平臺(tái)的單元測(cè)試。
  • 對(duì)于集成/插樁測(cè)試,Android和iOS 項(xiàng)目可以與KMM模塊一起包含在內(nèi),從而允許通過代碼庫中的本機(jī)仿真、仿真或硬件來測(cè)試數(shù)據(jù)庫和網(wǎng)絡(luò)。

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

其一,iOS開發(fā)人員可能會(huì)發(fā)現(xiàn)在KMM環(huán)境中工作很困難,因?yàn)樗枰狵otlin語言的知識(shí)。不過,如果你有其他語言的開發(fā)基礎(chǔ),比如Java、OC、Swift,你可以用一周的時(shí)間學(xué)習(xí)熟悉Kotlin語法并開始項(xiàng)目實(shí)戰(zhàn)。MqU28資訊網(wǎng)——每日最新資訊28at.com

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

其四,使用協(xié)程/異步方法調(diào)用的庫可能會(huì)由于舊Kotlin內(nèi)存模型的問題而崩潰。在大多數(shù)情況下,更新到最新版本的Kotlin可以防止這種情況發(fā)生。 MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

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

MqU28資訊網(wǎng)——每日最新資訊28at.com

參考鏈接:

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

https://www.jetbrains.com/zh-cn/kotlin-multiplatform/MqU28資訊網(wǎng)——每日最新資訊28at.com

https://medium.com/mcdonalds-technical-blog/mobile-multiplatform-development-at-mcdonalds-3b72c8d44ebcMqU28資訊網(wǎng)——每日最新資訊28at.com

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

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Rust編程基礎(chǔ)之函數(shù)和表達(dá)式

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

標(biāo)簽:
  • 熱門焦點(diǎn)
Top