国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

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

不同設(shè)備如何統(tǒng)一語言編程平臺高效開發(fā)?本文為你揭秘

HarmonyOS開發(fā)者 ? 來源:未知 ? 2023-05-11 20:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

隨著數(shù)字化時代的發(fā)展,手機、平板、PC、電視、智能手表、車機等智能設(shè)備的普及率越來越高,但不同設(shè)備往往搭載了不同的操作系統(tǒng)。面對不同的操作系統(tǒng)與開發(fā)框架,應(yīng)用開發(fā)難度大、成本高;同時,不同設(shè)備之間交互匱乏、體驗割裂,難以為用戶帶來一致性的應(yīng)用交互體驗。
HarmonyOS是一款面向全場景的分布式操作系統(tǒng),能夠兼容手機、平板、PC、智慧屏、智能手表、車機等智能設(shè)備。我們知道,HarmonyOS應(yīng)用開發(fā)需要使用高級編程語言,包括TypeScript(以下簡稱“TS”)、JavaScript(以下簡稱“JS”)、基于TS增強的ArkTS等,還需要配套相應(yīng)的工具鏈和運行時實現(xiàn)高效開發(fā)和運行。面對不同設(shè)備,開發(fā)者如何使用同一套應(yīng)用框架開發(fā)應(yīng)用,讓用戶獲得統(tǒng)一的應(yīng)用交互體驗?zāi)兀?/span>

基于此,方舟編譯器(以下稱“ArkCompiler”)應(yīng)運而生。ArkCompiler支持ArkTS/TS應(yīng)用預(yù)先編譯優(yōu)化機器碼,帶來高性能的運行體驗;同時,ArkCompiler的并發(fā)實例啟動更加輕快,并且提供混淆字節(jié)碼能力,有效提升了源碼的安全性。ArkCompiler助力開發(fā)者更加高效、便捷、安全地開發(fā)HarmonyOS應(yīng)用。


什么是ArkCompiler


ArkCompiler作為HarmonyOS應(yīng)用開發(fā)的統(tǒng)一編程平臺,包含編譯器、工具鏈、運行時等關(guān)鍵部件,支持ArkTS、TS、JS等高級編程語言的開發(fā)、調(diào)試調(diào)優(yōu)、運行等業(yè)務(wù)。

接下來,我們來看一下ArkCompiler編譯工具鏈與運行時的架構(gòu)。

編譯工具鏈架構(gòu)

ArkCompiler的編譯工具鏈以ArkTS/TS/JS源碼作為輸入,將其編譯生成為abc(ArkCompilerBytecode,即方舟字節(jié)碼)文件。

運行時架構(gòu)

ArkCompiler運行時包含了執(zhí)行引擎、內(nèi)存管理器、語言內(nèi)建標準庫等部件,直接運行字節(jié)碼文件,實現(xiàn)對應(yīng)語言規(guī)范的語義邏輯。



ArkCompiler的性能亮點


動態(tài)類型語言由于運行前無法確定對象類型,需要等程序運行一段時間后,JIT Compiler(Just-In-Time Compiler,即時編譯器)才能根據(jù)抓取到的運行信息明確對象類型并編譯生成對應(yīng)的優(yōu)化機器碼。

而靜態(tài)類型語言則可以根據(jù)確定的對象類型,直接編譯生成對應(yīng)的優(yōu)化機器碼,啟動即可獲得高性能,二者的啟動性能差異比較顯著。

編譯優(yōu)化視角主要區(qū)別

基于JS拓展出類型概念的TS已經(jīng)成為了前十流行的語言,然而業(yè)界目前并沒有直接運行TS的引擎,如需運行TS,要先將TS轉(zhuǎn)換成JS,再通過JS引擎運行。那么,TS的類型信息也就在轉(zhuǎn)換過程中丟棄了,運行時無法接收類型信息并作相應(yīng)的優(yōu)化。然而我們發(fā)現(xiàn),大部分情況下,JS程序中的對象類型是單一固定的,這也表明JS的對象類型大部分情況下保持不變。TS的類型是不是也可以在代碼運行前直接做編譯優(yōu)化呢?

2.1 業(yè)界JS引擎方案

JS開發(fā)者直接把源碼打到應(yīng)用包里,當運行時,引擎解析JS源碼需要先將JS源碼編譯成字節(jié)碼,然后再執(zhí)行字節(jié)碼。引擎抓取剖析一些運行時的信息,再使用JIT Compiler在運行時編譯生成優(yōu)化機器碼,最后才能執(zhí)行優(yōu)化機器碼,這樣才能以比較高的性能執(zhí)行JS。

業(yè)界JS引擎方案

2.2 ArkCompiler的優(yōu)勢

高性能ArkTS引擎—AOT編譯

我們前面已經(jīng)分析過,大部分情況下,JS的對象類型保持不變,而TS又會攜帶對象類型。因此,ArkCompiler讓ArkTS/TS能夠持平靜態(tài)語言的啟動性能,其實就是利用語言里的類型信息,讓ArkTS/TS像靜態(tài)語言一樣可以直接編譯生成優(yōu)化機器碼。

Bytecode Compiler(字節(jié)碼編譯器)會生成帶類型的字節(jié)碼,AOT Compiler(Ahead-Of-Time Compiler,預(yù)先編譯器)會根據(jù)類型字節(jié)碼預(yù)生成相關(guān)的類型對象,結(jié)合PGO1的配置文件信息,進行編譯優(yōu)化最終生成對應(yīng)的優(yōu)化機器碼。

ArkCompiler支持應(yīng)用運行前就編譯出優(yōu)化機器碼和字節(jié)碼。當應(yīng)用在移動設(shè)備上首次運行時,就可以直接運行高性能優(yōu)化機器碼了。



ArkCompiler的并發(fā)亮點


并發(fā)實例運行對比

3.1 業(yè)界JS引擎的Actor并發(fā)模型

上圖左側(cè)是業(yè)界并發(fā)實例的運行情況,由于JS是一門單線程語言,JS引擎在設(shè)計之初也沒有考慮多線程運行的支持和優(yōu)化。

從Actor并發(fā)模型的示例圖中,我們可以看出,每一個并發(fā)實例都創(chuàng)建了一個完整的引擎實例來支持運行。它的優(yōu)勢在于,類Actor的接口可以讓開發(fā)者不需要關(guān)心共享狀態(tài)和鎖,容易維護和測試,而且非常容易把并發(fā)實例遷移成分布式的服務(wù)。不過在移動應(yīng)用的場景中,這樣的實現(xiàn)也是HTML規(guī)范把Web Worker描述成啟動慢并且內(nèi)存開銷大的主要原因。

3.2 ArkCompiler的Lite Actor并發(fā)優(yōu)勢

上圖右側(cè)是ArkCompiler實現(xiàn)并發(fā)的運行情況。ArkCompiler的Lite Actor的實現(xiàn),實質(zhì)還是Actor模型,但是通過共享進程內(nèi)各并發(fā)實例之間的不可變對象,把基礎(chǔ)設(shè)施分層和輕量化,在各實例之間重用了一些公共基礎(chǔ)設(shè)施,讓并發(fā)實例運行更輕快。ArkCompiler的實現(xiàn)中,新增一個并發(fā)實例只需要拉起相應(yīng)獨有的部分。

基于此,我們和瀏覽器頭部引擎做了一個對比,在一定負載下,我們的并發(fā)啟動時間和啟動內(nèi)存取得了顯著提升。根據(jù)實驗數(shù)據(jù)表明,相較于業(yè)界的方案,Lite Actor并發(fā)實例啟動時間和啟動內(nèi)存均優(yōu)化了50%。



ArkCompiler的安全性亮點


字節(jié)碼混淆對比

4.1 業(yè)界JS引擎的安全性

現(xiàn)行的JS引擎,往往采用只有名稱混淆的UglifyJS2,應(yīng)用包中的源碼也是可見可調(diào)試,商業(yè)應(yīng)用源碼的安全性相對較差。

4.2 ArkCompiler的安全性優(yōu)勢

在ArkCompiler中,Hap包包含了混淆后的字節(jié)碼,相較于直接攜帶源碼,提高了開發(fā)者代碼的安全性。

HarmonyOS的代碼保護,打包的是二進制的ArkCompiler字節(jié)碼。即使經(jīng)過ArkCompiler編譯運行時提供的Disassembler反編譯,也只有字節(jié)碼能被看到,無法直接修改調(diào)試運行。



總結(jié)


目前,運行在ArkCompiler上的開發(fā)語言ArkTS,在TS的基礎(chǔ)上主要拓展了聲明式范式和狀態(tài)模式的UI編程。往后我們會在靜態(tài)模式、并發(fā)、安全等方面持續(xù)增強,讓ArkTS成為更卓越的應(yīng)用開發(fā)語言。

面對IoT時代的發(fā)展,我們會結(jié)合HarmonyOS應(yīng)用生態(tài)、開發(fā)體驗和用戶體驗等方面的需求,讓ArkCompiler與硬件、操作系統(tǒng)、開發(fā)框架、編程語言協(xié)同設(shè)計優(yōu)化;同時,在多語言統(tǒng)一編譯運行和多設(shè)備支持的基礎(chǔ)上,ArkCompiler讓HarmonyOS應(yīng)用的開發(fā)和運行效率顯著提升。

未來,ArkCompiler在持續(xù)優(yōu)化基礎(chǔ)體驗的同時,會更進一步結(jié)合HarmonyOS萬物互聯(lián)的需求,在跨端遷移、多端協(xié)同等創(chuàng)新場景,從編譯器和運行時等方面提供底層的解決方案和優(yōu)化機制,提升分布式應(yīng)用的開發(fā)和運行體驗。

說明:
1. PGO即Profileguided optimization,是一種基于性能分析(profiling)的編譯優(yōu)化技術(shù)。

2. UglifyJS是前端開發(fā)打包的最常用工具之一,包含JS解析器、代碼最小化、壓縮、美化的工具集。


文章推薦

點擊下方鏈接,查看更多文章

DevEco Studio 3.1 Beta新特性知多少

DevEco Device Tool 3.1 Release新版本發(fā)布

全新適配鴻蒙生態(tài),Cocos引擎助力3D應(yīng)用開發(fā)

HarmonyOS Connect認證測試



歡迎點擊|閱讀原文

進入了解更多ArkCompiler架構(gòu)信息


原文標題:不同設(shè)備如何統(tǒng)一語言編程平臺高效開發(fā)?本文為你揭秘

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

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

    關(guān)注

    80

    文章

    2153

    瀏覽量

    36048

原文標題:不同設(shè)備如何統(tǒng)一語言編程平臺高效開發(fā)?本文為你揭秘

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    軟通動力簽約數(shù)字化統(tǒng)一支付平臺項目

    近日,軟通動力與安徽辰信息科技有限公司正式達成合作,將攜手共建“統(tǒng)一支付平臺”。該項目旨在打造“統(tǒng)一入口、統(tǒng)一管理、
    的頭像 發(fā)表于 01-23 16:30 ?780次閱讀

    《京東API揭秘:如何讓的商品在京東平臺快速曝光?》

    在競爭激烈的電商環(huán)境中,商品能否快速獲得曝光是商家成功的關(guān)鍵因素之。京東作為國內(nèi)領(lǐng)先的電商平臺,其開放平臺提供了豐富的API接口,商家提供了強大的技術(shù)工具來實現(xiàn)精準、
    的頭像 發(fā)表于 12-08 17:55 ?1274次閱讀

    個面向單片機、事件驅(qū)動的嵌入式開發(fā)平臺介紹

    核心,打造統(tǒng)一的嵌入式技術(shù)生態(tài),廣大企業(yè)用戶和嵌入式開發(fā)者們,提供搞可靠性的、高性能的、現(xiàn)代且高
    發(fā)表于 12-05 06:26

    C語言編程技巧

    設(shè)計,分層開發(fā)代碼,便于理解和維護。 ?8、避免使用GOTO語句?:盡管GOTO語句在某些情況下仍然有用,但現(xiàn)代編程更傾向于使用函數(shù)和循環(huán)控制結(jié)構(gòu),以提高代碼的可讀性和維護性。 ?9、利用C語言的靈活性
    發(fā)表于 11-27 06:46

    C語言特性

    1、高效性:直接操作硬件 C 語言代碼的執(zhí)行效率極高,這是其最為顯著的優(yōu)勢之。它能夠直接訪問硬件資源,與底層硬件進行緊密交互,充分發(fā)揮硬件的性能潛力。在嵌入式開發(fā)中,硬件資源往往十分
    發(fā)表于 11-24 07:01

    C語言在嵌入式開發(fā)中的應(yīng)用

    穩(wěn)定性控制系統(tǒng)(VSC)等關(guān)鍵部件的開發(fā),C 語言都發(fā)揮著至關(guān)重要的作用。 以工業(yè)自動化生產(chǎn)線中的運動控制系統(tǒng)例,C 語言可以編寫高效可靠
    發(fā)表于 11-21 08:09

    文了解Mojo編程語言

    Mojo 是種由 Modular AI 公司開發(fā)編程語言,旨在將 Python 的易用性與 C 語言的高性能相結(jié)合,特別適合人工智能(A
    發(fā)表于 11-07 05:59

    發(fā)布元服務(wù)配置本地化基礎(chǔ)信息(應(yīng)用名稱、圖標)

    滿足如下條件: 元服務(wù)名稱必須與軟件包中的名稱致,且需符合元服務(wù)信息審核規(guī)范。 元服務(wù)名稱不能與本賬號下、同一語言、同設(shè)備類型的在架元服務(wù)的名稱相同。當前,
    發(fā)表于 10-24 17:42

    物聯(lián)網(wǎng)平臺應(yīng)用環(huán)境監(jiān)控:低代碼零編程簡化開發(fā),組態(tài)應(yīng)用

    復(fù)雜開發(fā)轉(zhuǎn)化為“拖拽組件、關(guān)聯(lián)設(shè)備”的簡單操作,讓企業(yè)無需編程也能快速搭建、靈活調(diào)整監(jiān)控系統(tǒng),適配工業(yè)、園區(qū)、農(nóng)業(yè)等多場景環(huán)境監(jiān)控需求。 、低代碼零
    的頭像 發(fā)表于 08-29 15:33 ?903次閱讀

    低代碼物聯(lián)網(wǎng)云平臺是什么?看完這篇,就領(lǐng)先

    降低物聯(lián)網(wǎng)應(yīng)用的開發(fā)門檻,讓企業(yè)能以更高效、更低成本的方式實現(xiàn)設(shè)備智能化與業(yè)務(wù)數(shù)字化。 、核心定義:技術(shù)融合催生的新型開發(fā)范式 低代碼物聯(lián)
    的頭像 發(fā)表于 08-14 15:16 ?673次閱讀

    揭秘京東 API,讓京東店鋪商品推薦更懂用戶

    ? 在當今電商時代,個性化推薦已成為提升用戶體驗的關(guān)鍵。京東作為國內(nèi)領(lǐng)先的電商平臺,其開放 API 開發(fā)者提供了強大的工具,幫助店鋪實現(xiàn)更精準的商品推薦。本文將逐步
    的頭像 發(fā)表于 08-14 15:04 ?933次閱讀
    <b class='flag-5'>揭秘</b>京東 API,讓京東店鋪商品推薦更懂用戶

    【HZ-T536開發(fā)板免費體驗】2 - 交叉編譯倉頡編程語言程序到開發(fā)板運行

    感謝電子發(fā)燒友和合眾恒躍提供的試用機會。 引言 上篇介紹了開箱的結(jié)果,接下來測試下華為倉頡編程語言開發(fā)板上運行的效果。最近對華為倉頡
    發(fā)表于 07-16 21:27

    匠芯創(chuàng)發(fā)布新版GUI開發(fā)工具 新增多國語言設(shè)置等功能

    近日,匠芯創(chuàng)自主研發(fā)的GUI開發(fā)工具AiUIBuilder推出全新V1.3.0版本。作為款基于LVGL的UI設(shè)計工具,AiUIBuilder致力于嵌入式平臺的圖形應(yīng)用
    發(fā)表于 07-16 13:54

    芯盾時代助力寧夏銀行統(tǒng)一身份認證平臺建設(shè)

    芯盾時代中標寧夏銀行!芯盾時代依托自主研發(fā)的用戶身份與訪問管理產(chǎn)品,寧夏銀行建設(shè)統(tǒng)一化、標準化、自動化的統(tǒng)一身份認證平臺,實現(xiàn)統(tǒng)一身份管理
    的頭像 發(fā)表于 07-10 16:33 ?1043次閱讀

    開源鴻蒙統(tǒng)一互聯(lián)分論壇圓滿舉辦

    萬物互聯(lián)時代到來,物聯(lián)網(wǎng)設(shè)備數(shù)量及設(shè)備連接數(shù)高速增長,如何實現(xiàn)高效、穩(wěn)定的設(shè)備間通信,成為行業(yè)重要的研究方向。作為開源操作系統(tǒng),開源鴻蒙帶來了全新的技術(shù)架構(gòu)和解決方案,其
    的頭像 發(fā)表于 06-05 15:33 ?1012次閱讀