華爲鴻蒙HarmonyOS應用開發介紹 ——華爲開發者大會2020觀後感

本文主要介紹看了就會的Harmony APP開發。 java

1 鴻蒙是什麼

openharmony.gitee.com/openharmonygit

華爲鴻蒙系統,Harmony OS,是能夠在不一樣類型的終端設備上部署的分佈式操做系統。 19年華爲開發者大會正式公佈,20年華爲開發者大會發布2.0版本並開源。編程

部署於手機的鴻蒙系統應該明年初正式面世。ubuntu

2 鴻蒙基於安卓?

  1. HarmonyOS並非基於安卓系統改造的一個OS,而是有別於安卓的另外一種基於Linux內核的操做系統。
  2. HarmonyOS的定位並不只僅是一個手機系統,而是一款面向全場景的開源分佈式操做系統,最小支持128K內存的輕量級IoT設備。
  3. HarmonyOS經過組件化和小型化等設計方法,支持多種終端設備按需彈性部署,可以適配不一樣類別的硬件資源和功能需求。

3 關鍵技術

  1. 分佈式調用、狀態遷移/同步:
    • 跨設備跨進程通訊經過極簡協議實現低時延,用戶交互在設備組合中能夠按場景無縫切換。
  2. 分佈式應用包結構:
    • 提供了用戶程序框架、Ability框架以及UI框架,支持應用開發過程當中多終端的業務邏輯和界面邏輯進行復用,可以實現應用的一次開發、多端部署。
    • UI能夠自動適配不一樣屏幕的佈局,並支持面向預覽的可視化編程。
  3. 分佈式軟總線:
    • 分佈式軟總線是多種終端設備的統一基座,爲設備之間的互聯互通提供了統一的分佈式通訊能力,可以快速發現並鏈接設備,高效地分發任務和傳輸數據。
    • 藉助分佈式軟總線能夠將多種設備組成一個超級虛擬終端。
  4. 安全和隱私保護:
    • 華爲TEE(Trusted Execution Environment)微內核採用了形式化驗證技術,獲CC EAL5+認證。

4 鴻蒙應用開發

「考慮到開發效率、編譯效率、運行效率、學習成本、編譯後包體積,華爲想要追求一個平衡,咱們也是在探索中。」——華爲專家windows

對於開發者而言,Harmony應用開發和Android應用開發區別不大,甚至能夠說是看了就會安全

IDE:DevEco Studio,基於IntelliJ IDEA,目前僅有Windows版本。markdown

開發語言:Java、JS、C++!框架

論壇截圖

具體如何進行鴻蒙應用開發,能夠參考論壇當天的截圖。mvvm

工程目錄結構能夠說和Android一模一樣:工程目錄結構能夠說和Android一模一樣 一樣採用配置清單+java+xml的模板:一樣採用配置清單+java+xml的模板 xml佈局實現: 生命週期: 觸摸事件: 跨設備流轉: 項目目錄結構: 編程語言

相信在座各位Android開發者們已經大概知道如何進行Harmony APP開發了。能夠說幾乎和Android開發一致,我的認爲華爲這樣設計是共贏的:

  1. 開發方式向Android看齊,開發者遷移成本低,有利於鴻蒙生態的拓展。
  2. 對於開發者我的來講,Android開發的工做經驗不會由於系統變動而做廢。

跨設備流轉

與咱們平常接觸的Android App開發不一樣的是,Harmony App開發多了一個「跨設備流轉」——其實基本上能夠把HarmonyOS當作一個物聯網操做系統,因此華爲在論壇上花了很大篇幅介紹軟總線,較詳細地介紹了Harmony APP在多設備之間通訊的協議模型和開發方式,並展現了部分API,反覆強調「一行代碼」搞定設備無縫通訊。

協議模型: 開發模型: API示例:

5 Java\JS\C++?

這三種市面上很是主流的編程語言在安卓也是佔據了最重要的位置:

  1. 安卓是基於Java語言的,Android SDK也是使用Java語言實現,幷包含了經常使用的Java類庫。編譯器會將.java文件編譯成.dex文件,可以被DVM或者ART VM執行而且加載。
  2. 而C++經常使用於處理較底層的一些業務,好比音視頻、圖像處理等。C++代碼最終會被編譯成.so庫的形式。
  3. JS通常用於H5頁面(WebView渲染)或者React-Native之類的跨平臺方案(JS調用原生)。

而根據華爲專家的介紹,在HarmonyOS中,這三種語言在應用開發過程當中的使用場景和Android相似,但也有所區別:

  1. Harmony APP也是支持使用Java+xml的方式進行業務開發(上文的截圖也展現了),這個和Android基本一致。
  2. HarmonyOS和Android同樣基於Linux Kernel,也繼承了Linux關於so相關的設計。因此C++代碼也會被編譯成.so庫供應用調用,這個和Android基本一致。
  3. Harmony應用開發中的JS就比較特別了:
    • JS會被編譯成統一的字節碼運行在VM上。
    • JS開發效率高能夠用於快速開發UI,而數據邏輯運算能夠經過Java語言編寫。
    • JS開發UI相似flutter的mvvm響應式佈局,並支持預覽、可視化編程(現場演示效果很棒,佈局預覽界面就能夠直接點擊交互)。

方舟編譯器

華爲以前就推出了方舟編譯器,提供了全新的系統及應用的編譯和運行機制,從動態編譯變爲靜態編譯,將Java直接編譯成機器碼,完全消除了虛擬機動態編譯的額外開銷,實現了開發和運行效率的兼容並舉。

根據專家介紹,方舟編譯器將來會支持編譯JS代碼,因此在Harmony應用開發中,JS既不是用於H5,也不一樣於React-Native這種JS調原生的機制,JS會被編譯成字節碼運行在華爲自行研發的VM上。

有點矛盾,明明說方舟編譯器將高級語言直接編譯成機器碼,爲何又說JS會編譯成字節碼運行在VM上,華爲專家的說法是兩者結合起來:

  1. iOS應用採用靜態編譯:運行效率高,但包體大、動態能力弱。
  2. Android應用採用動態編譯:運行效率較低,但包體小、動態能力強。

兩種編譯流派的優缺點基本互補,方舟編譯器可能採用」結合式「的編譯方案。

新語言?

現場也有同窗問及華爲是否考慮在鴻蒙上提供自研的新編程語言,專家的說法是目前用於Harmony應用開發的Java+JS都更像是現有編程語言的一種子集加強版本,而不是一種新語言。

關於自研新編程語言,華爲須要基於HarmonyOS的發展狀況再做考慮:編程語言須要考慮開發效率、編譯效率、運行效率、學習成本、編譯後包體積等等,而華爲想要追求一個平衡,目前也是在探索中。

在自研操做系統、編譯器的過程當中,華爲老是強調」結合「、」平衡「,感受也是比較有野心,想要創造出比現有技術更牛逼的一套體系。

7 現有項目移植鴻蒙?

徹底移植?不須要!

HarmonyOS能夠兼容Android App的運行,專家說是兩個操做系統並在一塊兒運行,我的推測就是在鴻蒙下面開個模擬器,相似於windows電腦也能夠開個ubuntu。

但純鴻蒙應用是確定沒法運行在Android系統上的。

部分改造

但考慮到HarmonyOS在多設備上的各類頗具吸引力的新特性(暫時只在PPT裏看到效果),假如往後HarmonyOS有至關的市場佔有率,那麼部分APP確定會有遷移至鴻蒙的必要性,華爲提供了兩種移植思路:

  1. 部分改造:將已有的某個模塊功能 基於鴻蒙上從新實現,從而可讓用戶體驗到APP在HarmonyOS的新特性。

  2. 增量改造:新增一些基於HarmonyOS實現的功能模塊,好比提供手錶等其餘設備版本的應用等。

以上就是上週五週六參加華爲開發者大會的HarmonyOS應用開發論壇的所見所聞,但願能夠幫助你們初步瞭解鴻蒙是怎麼樣的一個操做系統以及鴻蒙應用開發的方式。

相關文章
相關標籤/搜索