應(yīng)用

技術(shù)

物聯(lián)網(wǎng)世界 >> 物聯(lián)網(wǎng)新聞 >> 物聯(lián)網(wǎng)熱點(diǎn)新聞
企業(yè)注冊個(gè)人注冊登錄

鴻蒙開發(fā)套件,打造鴻蒙世界技術(shù)底座

2022-11-07 13:45 CSDN

導(dǎo)讀:2019年,華為HarmonyOS橫空出世,歷經(jīng)4年千錘百煉,面向智能家居、智慧辦公、智慧出行、運(yùn)動(dòng)健康、影音娛樂5大場景,自研代碼量從492萬行增長到2396萬行,API從3493個(gè)增長到16000個(gè),幾乎同步實(shí)現(xiàn)了近4倍的增長。

2019年,華為HarmonyOS橫空出世,歷經(jīng)4年千錘百煉,面向智能家居、智慧辦公、智慧出行、運(yùn)動(dòng)健康、影音娛樂5大場景,自研代碼量從492萬行增長到2396萬行,API從3493個(gè)增長到16000個(gè),幾乎同步實(shí)現(xiàn)了近4倍的增長。

HarmonyOS自研代碼量和API增長數(shù)據(jù)

如果說代碼量衡量的是 HarmonyOS 自身研發(fā)實(shí)力,開發(fā)工具則意味著對(duì)開發(fā)者的賦能功力。

在日前舉行的 HDC 華為開發(fā)者大會(huì) 2022 上,HarmonyOS 的多項(xiàng)舉措,讓我們看到了華為的那股子“向上捅破天,向下扎到根”的精神,通過打造自研開發(fā)工具和“根技術(shù)”能力,描繪出了鴻蒙世界的藍(lán)圖。

開發(fā)者四大痛點(diǎn)

從 HDC 現(xiàn)場分享的數(shù)據(jù)里,可以看到,2019-2022 這四年里,HarmonyOS 已累計(jì)收集到 10 萬余條開發(fā)者問題反饋。這個(gè)數(shù)字顯示出開發(fā)者對(duì) HarmonyOS 的期待與改進(jìn)。

投我以桃,報(bào)之以李。我們欣喜地看到,HarmonyOS 也以極大的表現(xiàn)回報(bào)開發(fā)者的熱情。

首先,HarmonyOS 將這些千頭萬緒的問題分析歸類,最后歸結(jié)為效率、性能、成本、安全四個(gè)方面。

效率方面:跨端應(yīng)?開發(fā)代碼能否進(jìn)?步簡化;跨端應(yīng)?調(diào)試能否更?便……

性能方面:JS/TS 應(yīng)?性能容易受硬件資源限制;進(jìn)程?拉起持續(xù)存在,容易引發(fā)應(yīng)?卡頓……

成本方面:?型應(yīng)?多?程管理成本?;多設(shè)備應(yīng)??程開發(fā)成本?……

安全方面:JS/TS 源碼容易被反編譯,安全度低……

問題擺在這兒了,HarmonyOS 要如何解決呢?

理念+實(shí)干,HarmonyOS 開發(fā)套件解憂開發(fā)者

HarmonyOS 的答案是理念牽引,實(shí)干支撐。

HarmonyOS 生態(tài)理念

理念只有區(qū)區(qū) 24 個(gè)字:“?次開發(fā),多端部署”“可分可合,?由流轉(zhuǎn)”“統(tǒng)??態(tài),原?智能”,卻蘊(yùn)藏著大內(nèi)涵。

萬物互聯(lián)時(shí)代,設(shè)備終端數(shù)以百億計(jì),每個(gè)終端都是一個(gè)節(jié)點(diǎn),但開發(fā)者并沒有必要為每個(gè)終端單獨(dú)開發(fā)應(yīng)用和服務(wù)?!?次開發(fā),多端部署”就意味著通過一套工程、多端部署,同一特性、多端運(yùn)行,一套界面、多端適配,就以意味著在最大程度地幫助開發(fā)者提升效率和獲得回報(bào)。

而如今的大型應(yīng)用,其代碼量動(dòng)輒上千萬行。把所有要修改的地方都開發(fā)完,再去測試和上架,周期之長,可想而知。于是,小步快跑、漸進(jìn)迭代成為開發(fā)者的首選項(xiàng)。在鴻蒙看來,在開發(fā)態(tài),“可分”即為應(yīng)用按照優(yōu)先級(jí)拆分為 HarmonyOS 原子化服務(wù),每個(gè)服務(wù)都可以獨(dú)立開發(fā)和上架;“可合”讓 HarmonyOS 原子化服務(wù)按需組合成為 HarmonyOS 應(yīng)用,而且每個(gè)原子化服務(wù)可以共享生命周期管理,這樣做對(duì)開發(fā)效率的提升有目共睹。同時(shí),在運(yùn)營態(tài),可以做到跨端遷移、“自由流轉(zhuǎn)”,比如手機(jī)接聽的電話在上車以后可以無縫流轉(zhuǎn)到車機(jī)上,跑步時(shí)手機(jī)播放的音樂可以無縫流轉(zhuǎn)到智能手表上,這才是真正做到應(yīng)用的自由流轉(zhuǎn)了。

HarmonyOS 統(tǒng)一了華為的硬件設(shè)備底座,同時(shí)還兼容 OpenHarmony 生態(tài),做到統(tǒng)一建設(shè)一個(gè)大的鴻蒙生態(tài)。不僅如此,開發(fā)者也能選擇原生的開發(fā)框架或者第三方框架開發(fā),與第三方生態(tài)共建共榮。同時(shí),依托華為在智能方面的積淀,在芯片層,HarmonyOS 幫助應(yīng)用提升性能、降低功耗;在應(yīng)用能力開放層,HarmonyOS 將自然語言交互、計(jì)算視覺、情景感知等能力以 SDK 的方式開放出來,開箱即用;在服務(wù)能力開放層,幫助開發(fā)者精準(zhǔn)觸達(dá)用戶,實(shí)現(xiàn)商業(yè)閉環(huán)。這一切,我們看到的是“統(tǒng)??態(tài),原?智能”。

在這三大理念的牽引下,HarmonyOS 對(duì)設(shè)計(jì)、開發(fā)、測試、分發(fā) 4 個(gè)階段的應(yīng)用開發(fā)全生命周期,進(jìn)行了徹頭徹尾的改進(jìn)和提升,一口氣推出了包括設(shè)計(jì)工具、編程語言、編程框架、編譯器、IDE 等“鴻蒙開發(fā)套件”七件套大禮包,誠意滿滿。

華為終端 BG 軟件部總裁龔體發(fā)布鴻蒙開發(fā)套件

HarmonyOS Design:為 HarmonyOS 應(yīng)用開發(fā)提供一致的體驗(yàn)設(shè)計(jì)規(guī)范及高效設(shè)計(jì)工具;設(shè)計(jì)資源免費(fèi)開放,支持開發(fā)者快速調(diào)用;

ArkTS:全新聲明式開發(fā)語言,兼容 JS/TS 語言生態(tài)、擴(kuò)展了聲明式 UI 語法和輕量化并發(fā)機(jī)制,簡潔高效,進(jìn)一步降低跨端應(yīng)用開發(fā)代碼量,開發(fā)效率提升 30%;

ArkCompiler:優(yōu)化編譯運(yùn)行機(jī)制,縮短動(dòng)態(tài)類型語言應(yīng)用啟動(dòng)時(shí)間;多種源碼保護(hù)技術(shù),保障動(dòng)態(tài)類型語言源碼安全;

ArkUI:升級(jí)渲染機(jī)制,簡化界面渲染算法;創(chuàng)新 Stage 開發(fā)模型,避免了后臺(tái)進(jìn)程無序侵占系統(tǒng)資源;邏輯和 UI 分離技術(shù),提升流轉(zhuǎn)開發(fā)效率;

開發(fā)(DevEco Studio)、測試(DevEco Testing)及應(yīng)用上架(AppGallery Connect)工具:配套聲明式開發(fā)體系全面升級(jí),實(shí)現(xiàn)高效開發(fā)、快速測試、一鍵上架分發(fā)。

這其中,最能讓開發(fā)者眼前一亮的有三個(gè)字“聲明式”,對(duì),就是那個(gè)開發(fā)者夢寐以求的開發(fā)模式。

聲明式開發(fā):HarmonyOS 技術(shù)路線轉(zhuǎn)型之基

HarmonyOS 從“命令式開發(fā)”全面轉(zhuǎn)型“聲明式開發(fā)”,意料之中。

對(duì)于“命令式”“聲明式”,開發(fā)者們并不陌生。

所謂“命令式”,顧名思義,程序按部就班地聽從“命令”去執(zhí)行,沒有自己的思想,不智能,只會(huì)遵循開發(fā)的規(guī)范,被動(dòng)去執(zhí)行。執(zhí)行得好壞、效率高不高,與開發(fā)者本身的技術(shù)能力關(guān)聯(lián)度很大,要寫出讓機(jī)器如何去做事情(how to do)的代碼,也就是說基本取決于開發(fā)者的代碼“水平”。現(xiàn)在大部分程序開發(fā)都是走的這條路。

而“聲明式”則大有不同,是對(duì)開發(fā)模式的一次變革——比 GitHub 的 Cloplite 輔助工具通過函數(shù)注釋生成代碼的方式更進(jìn)一步,只要“聲明”我想要什么樣的結(jié)果(what to do),程序就調(diào)用相關(guān)的API,自主設(shè)計(jì)執(zhí)行路徑,以達(dá)到預(yù)期的結(jié)果??梢钥闯觯奥暶魇健弊尦绦蚓邆湟欢ǖ闹悄?,開發(fā)起來能有效降低門檻,提升效率。

聲明式 UI 范式

可以看出,“聲明式”開發(fā)更接近人類語言,具備更高的可讀性、易學(xué)習(xí)性,并且代碼簡潔可重用、編碼高效好測試。

舉例來說,要炒一道菜,“命令式”要一步步地指揮洗菜、切菜、放油、下鍋、加料、翻炒、盛盤;而“聲明式”要表達(dá)的是想炒一道菜,程序便自動(dòng)調(diào)用相關(guān)的 API,尋找這道菜的最佳工藝并執(zhí)行。

隨著 AI 驅(qū)動(dòng)的自動(dòng)化編程技術(shù)的發(fā)展,“聲明式”從理想成為現(xiàn)實(shí),并且正在成為趨勢。

正是看到了這樣的趨勢,結(jié)合自身的積累,HarmonyOS 向“聲明式”開發(fā),正式開拔。

要進(jìn)行“聲明式”開發(fā),根在編程語言。在最關(guān)鍵的編程語言轉(zhuǎn)型為“聲明式”后,與之配套的應(yīng)用開發(fā)全生命周期的工具,自然要同步轉(zhuǎn)型,遵循同樣的語法規(guī)則,方能形成合力。

此次發(fā)布的聲明式開發(fā)語言 ArkTS 是 HarmonyOS 的主力應(yīng)用開發(fā)語言,它基于 TypeScript 語言體系擴(kuò)展了聲明式 UI 語法和輕量化并發(fā)機(jī)制,增加了一些語法糖的能力,讓跨端界面開發(fā)和并行化任務(wù)開發(fā),高效簡潔,使應(yīng)用開發(fā)效率提升 30%。目前,基于 ArkTS 語言的 API 已達(dá) 10000+,基本能滿足當(dāng)前應(yīng)用開發(fā)場景的使用需求。

事實(shí)上,ArkTS 語言并非一門全新的語言,而是作為 TypeScript 語言的增強(qiáng)型語言,因此兼容 JS 語言和 TS 語言的生態(tài)??傮w來說,ArkTS 主要增強(qiáng)了這幾個(gè)方面的能力。

實(shí)現(xiàn)了簡潔自然的描述機(jī)制:ArkTS 做了一些自定義能力的增強(qiáng),比如可以自定義組件,實(shí)現(xiàn)了組件化機(jī)制。自定義組件,可以被別的自定義組件所引用,形成新的更高級(jí)的組合型組件,這樣我們就可以把業(yè)務(wù)應(yīng)用中使用頻次高的復(fù)雜的幾個(gè)組件,直接定義成一個(gè)組件去重復(fù)利用,這對(duì)開發(fā)效率的提升顯而易見。

響應(yīng)式多維狀態(tài)管理:通過定義一個(gè)狀態(tài),實(shí)現(xiàn)在組件級(jí)、頁面級(jí)甚至全局的狀態(tài)觸發(fā)。這就方便了在應(yīng)用編程時(shí),根據(jù)需要再進(jìn)行觸發(fā),因?yàn)?ArkTS 提供的是響應(yīng)式 UI(聲明式 UI 本質(zhì)上也是響應(yīng)式 UI),而響應(yīng)式 UI 的界面刷新是根據(jù)狀態(tài)來進(jìn)行觸發(fā)的。這種模式有利于進(jìn)行狀態(tài)管理和定制。

動(dòng)態(tài)組合:可以在運(yùn)行時(shí)進(jìn)行動(dòng)態(tài)創(chuàng)建、組合內(nèi)容,并且可以直接引用到另外的運(yùn)行時(shí)中。

在這里,分享一個(gè)數(shù)字:相比傳統(tǒng)的 HTML+CSS+JS 的類 Web 范式,同樣的任務(wù),ArkTS 代碼量有超過 50% 的減少。

Stage:全新的規(guī)范化進(jìn)程管理開發(fā)模型

在聲明式之外,還有一點(diǎn)吸引到我了——Stage 開發(fā)模型,可謂是 ArkUI 中的一大創(chuàng)新。

ArkUI 的本意實(shí)現(xiàn)“一次開發(fā),多端部署”,提升開發(fā)效率和設(shè)備性能。具體的實(shí)現(xiàn)方式有三。

一是跨設(shè)備界面開發(fā)能力,這是鴻蒙一直在持續(xù)構(gòu)建的能力,不再贅述。

二是升級(jí)了整體渲染框架。傳統(tǒng)的渲染,由三棵樹來完成,經(jīng)過反復(fù)的嘗試后,鴻蒙實(shí)現(xiàn)了一棵樹來完成,同時(shí)把多節(jié)點(diǎn)組合模型變成了單節(jié)點(diǎn)+屬性組合模型。這些架構(gòu)的調(diào)整,對(duì)應(yīng)用開發(fā)者來說,是不可見、透明的。這頓操作之后,ArkUI 提升了界面加載性能——渲染速度提升 20%,渲染內(nèi)存降低 30%,渲染指令降低 20%。

三就是 Stage 這個(gè)“新生兒”。

之所以推出Stage模型,是因?yàn)樵谏弦淮苿?dòng)操作系統(tǒng)中,大多數(shù)的設(shè)備后臺(tái)管理比較混亂。Stage 模型提供了系統(tǒng)對(duì)進(jìn)程數(shù)量配置、后臺(tái)服務(wù)定義、后臺(tái)服務(wù)拉起等的統(tǒng)一納管,從而使應(yīng)用能夠更好地組織在一起。目前,Stage 模型支持兩種模式,一種是 JS 語言層的實(shí)體類 UIAbility,另一種是鴻蒙提供的一組系統(tǒng)類 Extention Ability。應(yīng)用如果希望調(diào)用系統(tǒng)提供類似服務(wù)的話,不再需要自己寫一個(gè) Service,而是自己繼承派生出一個(gè)基于 Extention 類的自有類,通過這種方式拉起相關(guān)的服務(wù)。

Stage模型

這樣管理起來之后,后臺(tái)的常駐程序可大幅減少,從使系統(tǒng)資源更加有序。

同時(shí),Stage 模型實(shí)現(xiàn)了將邏輯與UI解耦。意思是,使用 Stage 模型時(shí),可以讓邏輯段代碼和 UI 段代碼在分離的物理設(shè)備上運(yùn)行,這無疑強(qiáng)化了鴻蒙程序流轉(zhuǎn)的能力。

多設(shè)備應(yīng)用模型歸一、Stage 內(nèi)置的框架可以實(shí)現(xiàn)秒級(jí)的自動(dòng)恢復(fù),則進(jìn)一步強(qiáng)化了 Stage 模型在進(jìn)程管理方面的優(yōu)勢。

與傳統(tǒng)的編程開發(fā)模式相比,Stage 模型實(shí)現(xiàn)了碾壓,預(yù)計(jì)后續(xù)會(huì)逐漸成為鴻蒙的主流模式。

鴻蒙開發(fā)套件,還有非常多值得深挖的地方,受限于篇幅,我們這次對(duì)鴻蒙開發(fā)套件的初步觀察就先到這里。

鴻蒙開發(fā)套件總覽

最后,我們想說的是,做開發(fā)工具不容易,做覆蓋開發(fā)全生命周期的全鏈路開發(fā)工具更不容易。更進(jìn)一步,能同時(shí)做操作系統(tǒng)和全鏈路開發(fā)工具的,放眼全球,更是屈指可數(shù)。

鴻蒙操作系統(tǒng)+開發(fā)工具雙輪驅(qū)動(dòng)的鴻蒙生態(tài)的未來,值得期待。