【云駐共創】鴻蒙的Java技術棧
大家好,我是小Bob,一個關注軟件領域而又執著于計算機底層的開發者~
說到鴻蒙,大家都不陌生,作為華為的一張底牌,在之前放出消息時便受到了極大的關注。當然,作為IT界的我們更是對這個系統擁有更多的好奇,這不,在學完華為云Java的部分課程后,小編來了解鴻蒙的Java技術棧。
一.什么是鴻蒙?
鴻蒙OS,可以簡單稱之為是可兼容Android應用程序的跨平臺分布式操作系統。系統架構支持多內核,比如Linux內核、LiteOS和鴻蒙的微內核,在使用時可按照不同的智能設備選擇所需內核,例如在低功耗設備上使用LiteOS內核。
上面說到鴻蒙OS是一款分布式的操作系統,加上物聯網的時代,自然也要承擔也要承擔新一代的智能終端操作系統;鴻蒙HarmonyOS開發者、應用開發、設備開發、鴻蒙生態、分布式系統為不同設備的智能化、互聯與協同提供了統一的語言。
在今年的鴻蒙2.0發布之后,也是有越來越多的設備選擇了鴻蒙OS。其實作為一款操作系統,對于用戶而言只要好用就類似于得到了用戶的認可,為今后的萬物互聯打下基礎。
可能會有很多人說鴻蒙是安卓的套殼,可能小編起初想法也是的,畢竟你看UI都差不多的,但是在華為云直播時聽到李欣老師說過我們用Java來編寫安卓程序或者鴻蒙程序,其實在編程思想上是一樣的,就好比Java和C++都是面向對象的編程語言,那你能說java是C++的套殼嗎?
那么鴻蒙和安卓真的沒有不同嗎?這里我們來以鴻蒙的微內核做個簡單介紹。
二.什么是微內核?
在計算機業界的說法來看,微內核是一種內核的設計架構,由盡可能精簡的程序所組成,以實現一個操作系統所需要的最基本功能,包括了底層的尋址空間管理、線程管理、與進程間通信。
微核心的設計理念:
是將系統服務的實現,與系統的基本操作規則區分開來。它實現的方式,是將核心功能模塊化,劃分成幾個獨立的進程,各自運行,這些進程被稱為服務。所有的服務進程,都運行在不同的地址空間。只有需要絕對特權的進程,才能在具特權的運行模式下運行,其余的進程則在用戶空間運行。
微內核的基本原理:
只有最基本的操作系統功能才放入內核中。非基本的服務和應用程序在內核之上構建,并在用戶模式下運行。關于什么功能應該放入微內核,不同的設計有不同的方式,但是共同特點是許多傳統上屬于操作系統一部分的功能現在都是外部子系統,包括設備驅動程序,文件系統,虛存管理程序,窗口系統和安全服務,它們可以和內核交互,也可以相互交互。
摘錄一張經典的對比操作系統微內核和宏內核的圖示:
比如我們經常使用的 Windows,便是采用的混合內核。
微內核結構使用一個水平分層代替傳統的縱向分層,所有微內核之外的操作系統構件都被當作服務進程來實現,它們可以通過微內核傳遞消息來實現相互之間的交互。因此,微內核還可以驗證消息并授權訪問硬件,而且微內核還執行保護功能,阻止非法的信息等。
例如,應用程序如果要打開一個文件,則它發送消息給文件系統服務,如果他想創建一個進程或線程,則它發送消息給進程服務進程。每個服務進程之間可以相互通信,并可以調用微內核中的功能。
微內核的性能:
通過微內核構造和發送消息,比直接進行一次系統調用發花費更多時間。
一種解決方式是將一些關鍵服務和驅動程序重新放回內核中,可以減少用戶-內核模式以及進程間的切換次數,但是這是以犧牲微內核的設計強度為代價;另一種解決方式是通過正確的設計,構造一個非常小的內核,可以消除消除性能損失并提高靈活性。
微內核設計:
低級存儲器管理:微內核必須控制硬件上的地址空間,使得操作系統可以在進程級進行保護。微內核只負責把每個虛頁映射到一個物理頁幀,而存儲管理部分則在內核外實現,包括保護一個進程的地址空間不被其他進程干涉,頁面替換算法以及分頁邏輯。例如,內核外的虛擬存儲器負責何時把一個頁面調入存儲器或者何時換出一個頁面,而內核就負責將這些頁面索引映射到物理地址。
當一個應用程序發生引用了不在主存中的一頁的時候,,內核發生缺頁錯誤并執行陷阱,內核給頁面管理器所在進程發送一條消息。頁面管理器決定裝載頁面并分配一個頁幀,頁面管理器和內核進行交互,以把頁面管理器的邏輯操作映射到物理存儲器。一旦該頁可用,頁面管理器就給應用程序發送一條中斷恢復的消息。
這種技術可以不用調用內核操作,就將文件和數據庫映射到用戶地址空間。微內核一共提供了三個內核操作用于支持核外的分頁和虛存管理:
授權:一個地址空間的所有者可以授權其他進程使用它的某些頁。內核把這些頁從授權者的地址空間移出,并把它們分配給指定的進程;
映射:一個進程可以把它的任何頁映射到另一個進程的地址空間,使得兩個進程都可以訪問這些頁,就形成了共享內存。內核把這些頁面分配給最初的所有者,為其他進程 提供一個映射以便訪問它們;
刷新:進程可以回收授權給其他進程或者映射到另外進程的任何頁面;
進程間的通信:微內核操作系統中,進程之間或者線程之間進行通信的基本方式是
消息
。消息包括消息頭和消息體:消息頭描述了發送和接受消息的進程;消息體包含數據或者指向數據的指針。
可以認為進程間通信是基于與進程相關聯的端口(某個進程的消息序列),端口可以表明那些進程可以與這個進程通信。端口的標識和功能由內核維護,進程可以給內核發送一條指明新端口功能的消息,進程可以允許對自身授權新的訪問。
地址空間不重疊的進程間的消息傳遞涉及到存儲器到存儲器的復制,因此受限于存儲器的速度,復制的速度會遠遠低于處理器的速度。
I/O 和中斷管理:在微內核結構中,硬件中斷可能被當作消息處理。微內核可以識別中斷但是不處理中斷,它會產生一條消息給與該中斷相關聯的用戶級線程。因此,當允許一個中斷時,一個特定的用戶級進程被指派給這個中斷,并由內核維護這個映射。把中斷轉換為消息的工作必須由微內核完成,但是微內核并不涉及設備專用的中斷處理。
落實到鴻蒙系統,它的存在讓華為在智能手機操作系統上避免了“無米之炊”的困境,但其在推出面世之后,究竟會如何發展,又是否能夠承擔起當前我們的厚望,華為還需要回答很多問題,做很多工作,等待華為的依舊是萬里長征。
三.鴻蒙IDE下載安裝
回到主題,我們作為一名開發者,我們的開發體驗也是華為需要交的答卷,當然,它也給出了,在鴻蒙(https://www.harmonyos.com/)的官網,我們可以也可以看到它在上面的導航欄列出了開發這個選項,想必也是為我們擁有更好的開發體驗操碎了心。那么我們來看看這個體驗到底怎樣呢?
點擊導航欄上的開發選項,在下面我們找到華為的在線開發體驗以及HUAWEI DevEco Studio的下載和開發設備工具的下載。這里主要來講講HUAWEI DevEco Studio的下載以及安裝。
首先找到DevEco Studio的下載網址:https://developer.harmonyos.com/cn/develop/deveco-studio#download
根據不同的設備我們可以選擇不同的安裝包,這里我們以Windows為例。
下載完成后,我們會得到一個壓縮包,里面有DevEco Studio的安裝包,在安裝時需要注意自己設置好安裝路徑。
接下來點擊install安裝即可。
在安裝完成后我們便可以配置相關環境以及創建項目來開始相關鴻蒙的開發。
四.Java開發
說完鴻蒙,那么我們的Java如何開始學習呢?
小編最近在暑假也是跟著華為云的課堂有在學習Java,并且效果還不錯,比如有詳細的代碼講解,以及小型的項目代碼實現。
相關學習在華為云的活動中可以查看,學習時的筆記也是必不可少的哦~
學習Java除了做筆記之外,敲代碼也是必不可少的一部分,我們也可以試著將自己學習的筆記加源代碼通過git上傳到我們的GitHub上,也作為自己學習的一次經歷。
五.簡述鴻蒙的Java技術棧
Ability分類
Ability模板
用途
支持語言
Feature Ability交互類(FA)
Page Ability
提供用戶交互的能力
Java、Js
Particle Ability邏輯類(PA)
Service Ability
提供后臺運行任務的能力
Java
Particle Ability邏輯類(PA)
Data Ability
對外部提供統一的數據訪問抽象
Java
這里小編主要介紹的是鴻蒙的Java技術棧,那么就不可避免的介紹鴻蒙的FA調用PA機制。簡單來說我們用FA端來調用PA端,也可以稱之為是JS端調用Java端,可見鴻蒙也嘗試將前后端進行融合,JS和Java都能調用的數據格式:json(各個語言都能接收的標準格式)。
JS UI框架下FA與PA交互的使用:
JS UI框架提供的聲明式編程,使應用開發更加簡單,但當前鴻蒙OS對于JS 的API還不夠豐富, 還無法處理數據等更復雜的業務。為了達到處理復雜業務,同時保證業務數據和UI的解耦,一般會將復雜邏輯放到PA中即Java端實現;而界面交互則放到FA中的UI部分即JS端實現。
可能會有人說上述的部分功能使用Java或JS都能單獨實現,就好比我們做一個一個事情可能兩個人都能單獨做好,但同時一起來做肯定效率會比單獨一個人做的更好。
最后,鴻蒙生態的完善還需我們每一個開發者共同去努力~
參考資料:
鴻蒙系統(HOS)終于上線,微內核操作系統科普
Java 任務調度 內容共創 嵌入式
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。