導航:首頁 > 源碼編譯 > 清醒異構編譯器

清醒異構編譯器

發布時間:2023-08-31 05:30:03

1. 鴻蒙系統全面解析,誕生背景、技術細節生態圈一文看懂 | 智東西內參

華為6月2日正式發布的鴻蒙系統無疑占據了最近熱點話題的C位,雖然不全是贊美的聲音,但這種努力打破美國壟斷,挑戰谷歌、蘋果在移動操作系統上壟斷地位的嘗試必將成為中國 科技 史上的里程碑事件。

本期的智能內參,我們推薦興業證券的報告《華為鴻蒙深度研究》, 從鴻蒙系統的產生背景、開源技術細節和產業鏈生態圈全面解析鴻蒙系統。

原標題:

《華為鴻蒙深度研究》

作者: 未註明

鴻蒙產生的時代背景,總體來說有六個:

1、數字化的時代背景:數字化新時代的到來需要新的操作系統;

2、IoT 與 5G:5G物聯網時代的到來對操作系統提出了新的要求;

3、中國面臨「卡脖子」的挑戰:獨立自主的研發操作系統是迫切的需求;

4、人工智慧的興起:AIoT場景天然要求多設備智能協同,需要一個適用於各類型機器的操作系統;

5、大數據與雲計算:TB、PB級的大數據需要一個能夠提供多機互聯的操作系統;

6、全球信息安全面臨挑戰:網路安全威脅呈現多元化、復雜化、頻發高發趨勢,需要一個足夠安全的系統進行保障。

到鴻蒙的出現,操作系統已經經歷了四代:分別是Unix、Windows/Mac/linux、iOS/Android和鴻蒙/Fuchsia。

Fuchsia是由Google自主開發的基於Zircon微內核的開源系統,它可以運行在手機、電腦、智能家電等硬體產品上。

谷歌公司對Fuchsia的預期發展是讓它取代Android和 Chrome OS ,統一兩者成為一個操作系統。

和安卓相比,鴻蒙與安卓都是基於Linux開發,安卓是基於宏內核結構設計,而鴻蒙是基於微內核結構設計。鴻蒙系統使用C和C++編寫,不需要虛擬機這一中間過程,因此運行效率更高。

和iOS相比,iOS和鴻蒙都是致力於萬物互聯的操作系統,iOS底層是基於Unix的,並且是閉源的,鴻蒙是基於Lmux的, 是開源的。

全球操作系統格局

2012年,華為出於對谷歌如果對其斷供就會難以維持生產的顧忌,開始布局自有分布式操作系統。

2019年5月15日,華為被列入了所謂「實體清單」,谷歌Android 服務GMS對華為禁供。

5G迅猛發展,物聯網時代來臨,多年前的布局使華為抓住了最佳的發展時期。

鴻蒙發展 歷史

總體來說,鴻蒙的技術現階段優勢在於開放,但劣勢是生態。系統在分布式部署、時延和流暢性等方面具有優勢,但最大短板生態。

構建一個成熟的生態是鴻蒙能否生存下去並取得勝利的關鍵所在。

技術上,鴻蒙系統使用微內核架構。內核是操作系統內最基礎的構件,因此內核的設計對於操作系統的外部特性也有著至關重要的影響。

常見內核結構可以分為宏內核、微內核、混合內核、外內核等。

微內核是較新內核結構,但是它擁有著眾多宏內核不具有的優良特性,吸引了很多研究者。

微內核與宏內核對比

微內核架構包含兩類組件:核心系統和插件模塊。核心系統負責通用功能,不因為業務的變化而變化。

插件模塊負責實現具體的業務,可以根據業務的變化而改動和擴展。

微內核架構模式可以將其他應用程序的功能作為插件添加到核心應用程序,從而提供應用的可擴展性、功能分離性和獨立性。

微內核架構通常具有以下特徵:整體敏捷度高、易部署、可測性高、功能表現優秀、可擴展性強和不易開發。

鴻蒙系統設計

鴻蒙架構的另一個很大優勢是依靠分布式軟匯流排、分布式設備虛擬化、分布式數據管理、分布式任務調度等技術,可以實現多種類、多數量的設備之間硬體的互助和資源共享。

分布式數據管理

分布式軟匯流排

分布式設備虛擬化

鴻蒙系統設計初衷是為滿足全場景智慧體驗的高標准鏈接要求,可適配手機、平板、電視、智能 汽車 、可穿戴設備等廣泛的終端設備, 將在未來萬物互聯的智能 社會 中打造下一代操作系統。

鴻蒙當前和未來架構

在技術特性上,鴻蒙有著 一次開發,多端部署 的特點。

在鴻蒙OS的框架層提供了用戶程序框架、Ability框架和UI框架。它們可以支持多終端設備業務邏輯和界面邏輯的復用,這樣應用跨設備的開發效率也就得到了提框架層升。

另一個特點是 統一OS,彈性部署 。鴻蒙os通過組件化和小型化的設計方法,使得針對各種類型的設備可以按需求選擇合適的部署方案。

鴻蒙支持多種組件配置方案:1、支持各組件的選擇,組件並不是必須被部署,可以按照需要選擇合適的部件;

2、支持組件內功能集的配置,可以按照需求選擇性的給組件配置功能集;

3、支持組件內功能集的配置,可以按照需求選擇性的給組件配置功能集。

除了微內核,鴻蒙的另一大賣點是方舟編譯器。方舟編譯器可以方便安卓APP移植到鴻蒙系統。

方舟編譯器是華為自主研發的編譯器平台,它將以前邊解釋邊執行的低效運行方式轉變為將Java、C、C++等代碼一次編譯成機器碼的高效運行方式,同時也實現了多語言的統一。

華為官方數據表明,方舟編譯器能提升24%的操作系統流暢度、44%的系統響應能力和60%的三方應用操作流暢度。

華為當前的業務可分為四大領域:消費者業務、運營商業務、企業業務和雲服務四大業務領域相互協同、共同發展,拼接成華為生態戰略布局版圖。

華為生態

鴻蒙系統的生態可以概括為1+8+N。1+8+N戰略的核心是1 , 即智能手機。智能手機作為鴻蒙生態的核心部分,憑借華為海思自研的麒麟晶元,為其他設備終端提供相應的通信支撐。

正是因為萬物互聯的場景中手機的重要性,華為始終以全球手機市場第一作為目標。

8是指 PC、平板、智慧屏、音箱、眼鏡、手錶、車機、耳機 ,這8項將由華為公司親自研發和參與市場,並且會追求市場領先地位。

N是 攝像頭、掃地機、智能秤等外圍智能硬體 ,涵蓋移動辦公、智能家居、運動 健康 、影音 娛樂 、智慧出行五大場景模式。

這些領域是與鴻蒙生態的合作夥伴進行共同開發,在合作過程中,鴻蒙生態將會提供HiLink協議標准,HiAI組件,Lite OS等技術平台,同時將鴻蒙操作系統開源。

2019年8月,全球第一款搭載華為鴻蒙系統的榮耀智慧屏正式發布。

榮耀智慧屏作為當時首個搭載鴻蒙系統的終端產品,突破了傳統電視的概念,搭載有鴻鵠818智慧晶元等三顆華為自研晶元和升降式AI攝像頭,內置華為系統級視頻通話功能,開創了大屏和手機的新交互方式,除了可聯控智能家居,還能實現智慧雙投、魔法閃投、魔法控屏等功能。

鴻蒙OS + 智慧屏

2021年4月,華為的鴻蒙OS智能座艙正式發布。

鴻蒙OS車機操作系統是面向車的操作系統,與手機同平台。鴻蒙OS智能座艙搭載有一芯多屏、多用戶並發、運行時確定性保障、分布式外設、車載網路、多部件等多種應用,提供差異化啟動恢復、極速啟動、多用戶切換、聲場控制、多部件協同等功能。

鴻蒙OS智能座船可以及時升級應用,基於其HMS-Automotive平台,開發者能夠提供更好的服務與應用體驗,實現人、車、家的全場景協同。

鴻蒙OS + 智能座艙

同時面向車載場景增量還開發有HOS-A子系統,可實現賬號、多模輸入、用戶程序框架、元能力框架、多媒體、公共通信、車機業務啟動恢復等功能,使得自動駕駛、導航、視頻、音樂和通話等業務能夠在智能座艙和其他設備之間實現無縫切換,讓智能駕駛變得簡單、有趣、享受。

發布會現場透露,目前智能駕駛生態平台已獲得30+硬體生態、50+應用生態合作夥伴支持,未來鴻蒙OS將繼續加大與 汽車 及應用領域的開放與合作力度,與產業鏈一起打造智能駕駛的極致體驗。

2020年7月,華為消費者業務CEO余承東,與美的集團董事長方洪波正式簽署《戰略合作框架協議》,雙方在智慧家居領域達成「全方位戰略合作關系」 。

2021年4月,作為首批支持鴻蒙系統的家電產品,美的家用智能蒸烤箱S5mini正 式上市,該智能蒸箱搭載了華為鴻蒙系統,同時搭配了鴻蒙系統的一碰連特性,可以快速完成配網。

配網成功後,手機會自動跳轉到鴻蒙系統內置的輕量化產品頁面,用戶可以在頁面中獲取跟產品搭配的定製食譜,根據菜譜准備食材,即可一鍵啟動機器、機器自動烹飪。

智東西 認為,數字商業的終極競爭,歸根到底就是操作系統的競爭,全球市值前3名的蘋果、谷歌和微軟,他們共同特點就是都具備操作系統。鴻蒙的推出,長遠來看決定了能否在異構計算時代中取得第四張操作系統入場券的關鍵。

2. 程序語言,操作系統,編譯器三者之間有何關系

程序語言,操作系統,編譯器三者之間有何關系?

可以理解為程序語言需要在編歷喚譯器裡面進行編譯,但是編輯器需要運行在操作系統里
編程語言(programming language),是用來定義計算機肢鉛凱程序的形式語言。它是一種被標准化的交流技巧,用來向計算機發出指令。一種計算機語言讓程序員能夠准確地定義計算機所需要使用的數據,並精確地定義在不同情況下所應當採取的
簡單講,編譯器就是將"一種語言(通常為高級語言)"翻譯為"另激脊一種語言(通常為低級語言)"的程序。一個現代編譯器的主要工作流程:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (piler) → 目標代碼 (object code) → 鏈接器 (Linker) → 可執行程序 (executables)
操作系統是管理計算機硬體資源,控制其他程序運行並為用戶提供交互操作界面的系統軟體的集合。操作系統是計算機系統的關鍵組成部分,負責管理與配置內存、決定系統資源供需的優先次序、控制輸入與輸出設備、操作網路與管理文件系統等基本任務。操作系統的種類很多,各種設備安裝的操作系統可從簡單到復雜,可從手機的嵌入式操作系統到超級計算機的大型操作系統。目前流行的現代操作系統主要有Android、BSD、iOS、Linux、Mac OS X、Windows、Windows Phone和z/OS等,除了Windows和z/OS等少數操作系統,大部分操作系統都為類Unix操作系統。

操作系統和編譯器的關系?

操作系統是和硬體的橋梁,所有軟體如果要運行,就得在裝有操作系統的機器上運行。沒有安裝操作系統的計算機,是不能運行其它軟體的,裝上了linux,你才能在它上面安裝g, 你可以用g編譯各種軟體,比如linux版的QQ等,同樣你也可以用g編譯linux系統軟體(因為系統軟體也是軟體),並把編譯好的linux軟體放到機器上安裝。
當然也可以寫個編譯器在沒有操作系統的機器上編譯,但這個編譯器就要做很多和硬體打交道的事。至少g是不行的,要運行在操作系統上的。

操作系統有哪幾大特徵?它們之間有何關系?

說得通俗點 就是一個操作平台 你要是用什麼軟體或執行什麼程序 都需要建立在一個支持的平台上才好發揮出作用
之間 不知你所指是什麼

家庭版 專業版 旗艦版 一個比一個功能更全面

關於編譯器 操作系統 CPU

是編譯器定的... 基本數據類型(VC為例)主類型分類型修飾符佔用空間表示範圍整形整數形 intshort2位元組-32768 ~ 32767long(默認)4位元組-231 ~ (231 -1)unsigned short2位元組0 ~ 65535

操作系統可以編譯高級語言源程序嗎

首先你要搞清楚操作系統與編譯器的概念,操作系統是一個軟體平台,本身沒有編譯功能。編譯器是運行於操作系統上的一個應用程序,只要有人把某種編程語言的編譯器移植到這個操作系統上,那麼就可以在這個操作系統上編譯這種語言。
另外,不知道你說的高級語言是哪些,C++和JAVA之類的算不算?
一般來說,電腦用的操作系統上面,比如windows 和 Linux 都有多編譯器,而小型的嵌入式操作系統則少有編譯器可以能運行其上。

用戶、計算機和程序員三者之間有何關系

用戶是使用計算機的,計算機為用戶提供服務,而程序員與計算機就像"朋友",可以彼此交流。實現人機對話。一一一個人解答,望採納。

語言編譯器是一種( ) A 系統軟體 B 微機操作系統 C 字處理系統 D 源程序

可以先明晰下規則 答案來自hhqq005
編譯器:翻譯工具,把高級語言源程序翻譯為匯編語言源程序,再把匯編源序翻譯成目標代碼供連接程序使用。
語言:一個規則。例如:C語言,它規定程序入口為main(),和其它規定。並把這些 <規定的集合> 命名為C語言。
TC:一個開發工具,它包括文本編輯器,編譯器,連接程序,調試環境等等。TC中的編譯器是TCC.EXE文件。
關於匯編:
匯編語言是一個規則,
匯編程序是一個翻譯工具
匯編源程序是一個 符合(匯編語言)規則的程序代碼
匯編是一個過程,這個過程是匯編程序 把匯編源程序 翻譯 為目標代碼的過程
對於高級語言:翻譯的過程叫做編譯,翻譯工具叫做編譯程序或編譯器。
我覺得 這樣看的話 是選擇A

操作系統和語言程序的關系

操作系統是系統軟體,不是編程語言。軟體是由編程語言編寫。常用的語言如匯編,C,C++,VC,VB,JAVA,DELPHI等。大部分應用程序都應在一定的系統平台(Windows,Unix,LInux)下工作。並不是說一定要有操作系統。否則在60-70年代計算機還有什麼用。但是有了操作系統對於人們應用計算機帶來了很多便利。至於說編程語言否也需要系統支持。還是那句話,在沒有系統前,人們就是用匯編和C語言編寫了windows系統!
當然一定的語言要有一定的編譯環境,所謂編譯環境就是一定的軟體集成環境,如要有編輯程序,連接程序,編譯程序,解釋程序等!而這些程序又需要系統的支持,所以編程語言需要系統支持,只不過並非是windows系統。在這里就我個人認為,只有匯編語言例外。

工作、家庭和親人三者之間有何關系?

家庭是一群由血緣和婚姻紐帶連接起來的人。這些人生活在一個屋頂下,共同開支預算。當然這僅僅意味著理論上的概念,在現實生活中,家庭生活是與周圍活躍的社會生活互相聯系的,它要受當時經濟、政治、文化及人們心理,信仰等變化的影響。無論在世人看來是多麼獨立的家庭,它實際上多多少少要反映出全部重要的社會現象,而反過來,所謂的「大世界」(即社會生活也必然要賦予家庭中人際關系所具有的特徵,例如夫妻,父子關系等等)。
在社會主義所有制的影響下,隨著國家對公民家庭物質福利的改善,家庭作為以父親為首的經濟生產個體的職能已經消亡,現在蘇聯人的家庭關系首先指的是人的關系,而不是指經濟關系。蘇聯人普遍認為,夫妻子女間的情愛和共同利益是他們最關心的方面。
當然,迄今為止,經濟在家庭生活中仍然還起著很大作用,它突出表現在家庭的物質利益和家庭成員的自助活動中。社會主義制度確保人與人之間的平等,因此其生活方式的一個重要特點就是夫妻共同管理家庭,共同分擔家務勞動。隨著時代的變遷,我們對於家庭與社會之間的責任和義務都有重新分配的必要。由於科技事業的發展,在很大程度上解決了蘇聯人民的衣、食、住、行狀況,他們無需再花費更多的精力從事一些瑣細的家務勞動,從而把大部份精力和時間投入從事社會性的創造活動。一般說來,家庭的建立和和睦幸福的確需要一定程度的物質條件,可這遠遠不是決定家庭幸福的唯一絕對因素。為了人們家庭安穩和諧,有必要首先清醒地認識幸福所包含的意義。為此,蘇聯社會學家V·波耶柯進行了測試,他把調查結果分為三類:
1.物質因素:一套公寓和物質福利優厚。
2.人的因素:夫妻間的相互理解,如對孩子的看法,有信心建立牢固的婚姻,共同的興趣等。
3.其它因素:令人滿意的工作,文化程度,好職位,社交范圍等。
被調查的3220個列寧格勒市民中,有一半的人認為家庭幸福首先取決於夫妻間的理解,然後才談得上其它因素。這次調查結果與蘇聯社會學家Z·楊柯夫1978——1979年與蘇聯《勞動婦女》雜志編輯部所做的調查一樣,不論男女公民,在確定自己的家庭關系時都首先考慮相互的理解和體貼,雙方互相尊重,第二是要能共同承擔養育子女的義務,但是,由於男女生理,心理特徵的差異,使女性比男性更為強調理解和信任的重要性,至於家庭之外的其它因素,男女均認為有一個滿意的工作是必要的前題,女性側重雙方共度餘暇,積極參加旅遊,社交是鞏固婚姻紐帶有效的辦法;男性更為珍視自我意識,行動自由和在社會上的個人名望及地位。
摘自網路
這樣,由於男女願望的差異和家務勞動,家庭生活所形成的獨特性,就使得家庭成員之間必須了解自己在家庭生活中應該扮演的角色,及所需承擔的義務。而家庭成員怎樣成功地處理好家務瑣事,家庭關系又反映出其所處社會的成熟和完善程度。社會學家認為:一個完美幸福的家庭,既要滿足其成員間婚姻和伴侶的本能的原始要求,又要使他們在自己子女身上體現出父愛或母愛,而與此同時通過大量日常共同的家務瑣事漸漸獲得正確處理夫妻關系的經驗,從而去理解家庭幸福和愛情的更深的層次。
一對和睦相愛的夫婦所關心的不僅僅是自己,而是對方的需要,這樣又提高了自己在愛人眼裡的價值,取得了他或她的尊敬。跟潘約諾夫夫婦一樣,成千上萬和睦的男女由於共同的生活目標,共同的企望密切地聯系起來,使他們能和衷共濟,屢經磨礪而不動搖婚姻家庭的基石。社會主義制度下這樣珍惜愛情,互相關心,愛撫下一代的夫妻關系正是現代蘇聯人生活的楷模。

3. JavaEE和ASP.NET相比哪個更有前途為什麼好在哪裡

JavaEE和ASP.NET相比Javaee更有前途。
J2EE與.NET比較
1.體系架構的比較
作為彼此競爭的應用平台,J2EE和.NET開發平台在目標和體系結構上極其相似,但在實現上又完全不同。
(1)類似的平台基礎構造 J2EE和.NET兩個平台在底層的執行引擎都源於託管的虛擬機概念,但.NET的CLR沿著Java虛擬機(JVM)走得更遠,CLR在借鑒了JVM的自動垃圾收集、異常處理等機制的同時,又為.NET平台添加了多語言支持、組件自描述等新的特性。
在.NET和 J2EE平台上,程序的編譯都經過兩個類似的過程。首先,特定高級語言編譯器將C#(及其他.NET語言)和Java源代碼分別翻譯成中間語言(IL)和位元組代碼(ByteCode)。.NET在中間語言設計時通盤考慮了多個主流高級語言,在這一層面實現了.NET平台的跨語言承諾;J2EE的基石是Java語言,它最典型的特徵是:一次編寫,多次運行。跨平台是J2EE一直引以為豪的關鍵,這是通過JVM來實現的。
其次,在執行時,中間語言被即時編譯器(JIT)編譯成特定平台的二進制代碼,位元組代碼則通過JVM解釋執行,完成各自語言的指令功能。鑒於微軟在「Wintel平台」上的代碼優化功底,.NET代碼的執行速度較之於Java有明顯的優勢是不爭的事實。但在Unix/Linux平台上,由於.NET遲遲未能實現其跨平台的承諾,J2EE幾乎成了惟一的選擇,執行效率的比較也就無所謂。在代碼執行的同時,通用語言運行時和Java虛擬機也都提出了異常捕捉、類型安全、內存分配和垃圾收集等自動化內存管理工作,大大減輕少了現代軟體的內存泄漏問題,減輕了程序員的繁重負擔。
面向對象程序設計在J2EE和.NET平台中都獲得了直接的支持,單根繼承加多介面實現是它們共有的特徵。但在面向對象之外,.NET對現代組件編程提供了直接支持。當然,當下很多企業中間件都是基於J2EE平台,只是.NET從設計、編碼、配置到運行都給予了組件編程更多、更直接的支持。
在基礎的和企業級的服務上兩個平台很難一決高低。從基礎的集合、字元串操作到企業級的API介面,如JMS、JDBC、JAX和JNDI等,J2EE在這方面有著非常堅實的結構。微軟.NET框架類庫也不示弱,提供了從圖畫、網路、線程到ADO.NET、ADSI、Windows表單和ASP.NET等一系列的API。
除去API類庫的無縫的功能復用外,對本地平台的調用操作也是值得關注的。CLR和Java虛擬機都支持本地方法的調用。在異構平台方面,J2EE更鍾情於IIOP(InternetInterORB Protocol),而.NET則使用SOAP。
(2)相同的三層/多層體系 基於三層/多層分布式計算結構已毋庸置疑地成為當今企業應用的主流模式,也是兩個平台較量的著力點。
在客戶端,表示層負責用戶與系統的交互。對於不同的處理要求,.NET和J2EE都提出了基於桌面的應用程序和基於瀏覽器的Web應用的開發組件:JavaApplication與Windows表單、Java Servlet/JSP與ASP.NET雙雙形成犄角之勢。但Windows表單依賴微軟桌面系統的天然優勢,無論在交互速度還是在界面的表現性能上都較JavaApplication稍勝一籌。Servlet/JSP與ASP.NET是目前企業在「瘦客戶端」應用的重點,兩者都基於HTTP請求/響應模型,通過HTML瀏覽器頁面完成用戶交互。雖然ASP.NET聲稱在底層通過編譯執行獲得了相當高的處理速度和伺服器方控制項的瀏覽器自適應能力,但目前並沒有這方面的硬性數據,很難據此而論高低。在緩存、狀態優化等方面兩者可謂是旗鼓相當。另一個與客戶端應用相關的技術是ActiveX與Applet,從目前的趨勢來看,它們在兩個平台上的地位逐漸邊緣化,也不為大多數企業所接受。
在中間層,分布式業務組件負責企業應用的商業邏輯部署。由於這些業務組件經常負責處理資料庫連接、網路資源和線程等高昂的資源,所以一直是三層/多層架構的關鍵和企業應用的核心。J2EE的EJB是一個成熟的、得到業界廣泛支持的大型企業級組件框架,而.NET組件則是建立在新型的COM+服務之上,兩者在組件與操作系統的交互、客戶端資源共享等方面都有很好的支持。.NET則通過元數據支持自描述性的組件開發、XCOPY部署以及多版本共存,無需注冊表和描述文件,對企業客戶有一定的吸引力。
在後端數據層,兩個平台都為資料庫連接量身定做了一套數據存取模型:J2EE的JDBC和.NET的ADO.NET,它們在支持傳統SQL數據源的同時,也支持新型的XML數據源。這方面由於更多地涉及到具體的資料庫產品,很難說那種數據模型更有優勢。

2 移植性比較
在移植性方面,.NET支持跨語言,J2EE支持跨平台。
微軟通過.NET 通用語言運行時來消除編程語言的差別,「選擇.NET平台就意味著選擇Windows」,這句話至少在可預見的一段時間里仍然是一個基本事實。J2EE則通過Java虛擬機來消除平台差別,跨平台是它的一大賣點,也是在選擇企業應用開發平台時的一個重要參考因素,幾乎所有的主流操作系統都提供了對J2EE的支持;實際上如果要搭建跨Unix、Windows等多個操作系統平台,J2EE平台幾乎是惟一的選擇,J2EE更關注跨平台而不是跨語言。但微軟認為,如果企業的應用都能通過標准協議以Web服務的方式發布,那麼平台都是中立的。為了吸引更多的開發者和鼓勵廣大企業廠商轉到.NET平台,微軟提出了多語言支持,希望用跨語言的交互性來平衡跨平台的互操作。
3. 性能比較
性能是J2EE和.NET喋喋不休的話題。二者之間著名的論戰是一個關於寵物店的範例應用。寵物店是Sun一度以來作為J2EE典型應用的展示範例,而.NET「自告奮勇」地在自己的平台上實現了該寵物店應用,且聲稱代碼行是J2EE的1/3,效率卻是J2EE的30倍。但Sun的理由是這個範例根本不適合用來做性能比較,該範例實現也沒有做針對性能的優化,而且指責微軟通過後端資料庫優化和緩存虛抬了.NET平台的效率。這樣的爭吵當然不能作為判斷的依據,目前也沒有見到更客觀的第三方評測報告。在「Wintel平台」上也許沒有理由懷疑.NET的性能;至於非Windows平台,.NET和J2EE也不再具有可比性。
4.安全性、穩定性比較
WINDOWS本身的安全漏洞,使得.NET的安全性不如J2EE。同時,在應用伺服器的選擇上,.NET只能用IIS,安全性、穩定性難以保證;而J2EE有更多的選擇,可以在諸多遵循標準的廠商所提供的應用程序伺服器中,選擇最符合需要、成本最低、而且又被認為是最佳的平台。
5.可擴展性比較
.NET平台的擴展思想是基於軟體的橫向擴展,而J2EE平台的擴展思想則是基於硬體的縱向擴展。
Windows系統一般只能擴展到不超過8個處理器,而Sun的系統卻可以擴展到100個甚至更多處理器。
基於J2EE平台的應用程序可被部署到各種操作系統上,例如可被部署到高端UNIX與大型機系統,這種系統單機可支持64至256個處理器,這是NT伺服器所望塵莫及的。J2EE領域的供應商提供了更為廣泛的負載平衡策略,能消除系統中的瓶頸,允許多台伺服器集成部署。這種部署可達數千個處理器,實現可高度伸縮的系統,滿足未來商業應用的需要。
6.成熟度比較
在平台的成熟度方面,兩者也有一比。J2EE在1999年形成了成熟的架構,發展至今已經具有相當成熟的、經過檢驗的企業應用系統。而.NET究其淵源是源自微軟以前開發企業應用程序的平台DNA(DistributedNetwork Architecture),其中包括了許多已經被證實的技術,並且這些技術已經在產品中得到實現,包括微軟的事務伺服器、COM+、消息隊列和SQL Server資料庫等。
7.第三方廠商的支持
J2EE作為一種開放的規范,從一開始就得到了眾多廠商的支持,IBM、BEA、HP、Oracle等在J2EE的實施上都有較大的投入。目前市場上最好的J2EE應用伺服器並不是Sun與Netscape合資的iPlanet,而是BEA的WebLogic和IBM的Webshpere。開發工具有Borland的JBuilder、Sun的Forte for Java、BEA的WebLogicWorkshop、Oracle的JDeveloper、IBM的VisualAge forJava等。
而.NET在設計之初就緊緊地把平台規范與產品膠合在一起。雖然,NET架構的一小部分具有開放性(如C#語言、通用語言基礎構造CLI 和Web服務標准),但至少目前很難想像會有一個非微軟的.NET實現。Visual Stdio.NET是其唯一的開發工具。
8.開源支持比較
J2EE開源產品眾多,免費框架居多,相應的最佳實踐設計模式層出不窮。而.NET無開源社區支持,是以框架開發者為主導的設計。
9.學習成本比較
J2EE門檻較高,由於多且雜,需要開發人員花費很長時間才能熟悉整個體系。而.NET門檻較低,使用方便,學習成本較低。但是,對於開發人員來說,.NET在系統整體架構的設計方面不如J2EE易於把握。
10.對WEB服務支持的比較
從.NET和J2EE這兩個平台的發展歷程來看,.NET從一開始就深深打上了Web服務技術的烙印,在它的市場推廣活動中,無時無刻不凸顯其作為Web服務的開發和部署平台的特徵,可以說,.NET天生就是為Web服務准備的開發和部署平台。相對.NET而言,J2EE是一個比較「老」的東西,最初它是為了將Java平台拓展到企業級應用領域而制訂的一個平台框架規范,隨著Web服務技術的興起和發展,J2EE平台作為一個企業級應用的開發和部署平台,無法迴避業界的重大技術革命——Web服務,J2EE也不斷地引入了對Web服務的支持。
從服務描述、服務實現和服務的發布、發現與綁定,以及服務的調用和執行這些不同的角度看,J2EE和.NET的支持基本不相上下,惟一的區別可能是.NET的開發工具更為方便一些、集成度更高一些。
在Web服務規范的控制方面,微軟與IBM共同主推了大量的Web服務規范,在一段時間內,兩家公司Web服務技術的市場推廣活動都是聯合舉行的,不難看出這兩家公司在這個領域背後的戰略合作關系。最初的Web服務核心技術SOAP、WSDL主要由這兩家公司制訂,後來的UDDI是由這兩家為首的多家核心企業共同制訂,再後來的一些不是核心的Web服務規范,如WS-Inspection、WSFL、WS-Security、WS-Routing、WS-License和WS-Referral等,則完全是由這兩家來制訂的。不難看出:IBM和微軟對於Web服務的貢獻以及它們對Web服務規范的控制。
盡管由於某種原因,Sun公司曾經在很長的一段時間里被排除在WS-I(由IBM,微軟和BEA發起成立的促進WEB服務互操作的一個組織)的門外,但這並沒有影響Sun公司繼續在WEB服務方面堅持開放的戰略。Sun公司是Java語言的發明者,而作為一個開放的跨平台的技術體系,Java在WEB服務的開發方面也起著非常重要的作用。雙方妥協後,Sun最終被接納為WS-I的董事成員。
Sun公司積極地參與了制訂Web服務規范的過程,像XML和ebXML。並已經在Java中支持WEB服務中最重要的規范,例如SOAP(JAX-RPC、JAXM、SAAJ和JMS)、WSDL(Java API forWSDL)、UDDI/ebXML(JAXR)和XML(JAXP,JAXB)等等。Sun公司除了積極地參與Web服務領域里的標准化工作,更是努力地為客戶提供全面的軟體產品,為用戶開發和部署Web服務提供平台。Sun公司的Sun ONE Web服務平台開發版,是業界第一個用於基於Java技術的Web服務和Web應用開發的全方位的集成平台。該平台集成了多種SunONE伺服器軟體、Java開發工具,支持業界的WEB服務標准,而且是面向開發人員設計,安裝和使用都非常簡單。

4. 常用的組態軟體有哪些

組態軟體有ChinPMC、InTouch、QTouch、IFix、Citech。

1、ChinPMC

ChinPMC在傳統組態軟體的基礎上,提供管控一體化組態工具及多終端一體化運行環境,以數據展示的直觀性(圖形、圖表、曲線、報表)、圖形格式的矢量化、數據監控的實時性、事件處理的智能性、多系統集成的開放性、系統平台的無關性為重要特徵。

為生產企業的安全生產、環境監測、節能減排和物聯網應用提供開發和運行支撐工具集。

2、InTouch

最早進入我國的組態軟體。在80年代末、90年代初,基於Windows3.1的InTouch軟體曾讓我們耳目一新,並且InTouch提供了豐富的圖庫。

但是,早期的InTouch軟體採用DDE方式與驅動程序通信,性能較差,最新的InTouch7.0版已經完全基於32位的Windows平台,並且提供了OPC支持。

3、QTouch

由著名的QT類庫開發而成,完全具有跨平台和統一工作平台特性,可以跨越多個操作系統,如unix、linux、windows等,同時在多個操作上實現統一工作平台,即可以在windows上開發組態,在linux上運行等。

QTouch為HMI/SCADA組態軟體,提供嵌入式linux平台的人機界面產品。

4、IFix

Intellution公司以Fix組態軟體起家,1995年被愛默生收購,現在是愛默生集團的全資子公司,Fix6.x軟體提供工控人員熟悉的概念和操作界面,並提供完備的驅動程序(需單獨購買)。

5、Citech

CiT公司的Citech也是較早進入中國市場的產品。Citech具有簡潔的操作方式,但其操作方式更多的是面向程序員,而不是工控用戶。

Citech提供了類似C語言的腳本語言進行二次開發,但與iFix不同的是,Citech的腳本語言並非是面向對象的,而是類似於C語言,這無疑為用戶進行二次開發增加了難度。



(4)清醒異構編譯器擴展閱讀

組態軟體功能

1、可以讀寫不同類型的PLC、儀表、智能模塊和板卡,採集工業現場的各種信號,從而對工業現場進行監視和控制。

2、可以以圖形和動畫等直觀形象的方式呈現工業現場信息,以方便對控制流程的監視也可以直接對控制系統發出指令、設置參數干預工業現場的控制流程。

3、可以將控制系統中的緊急工況(如報警等)通過軟體界面、電子郵件、手機簡訊、即時消息軟體、聲音和計算機自動語音等多種手段及時通知給相關人員,使之及時掌控自動化系統的運行狀況。

4、可以對工業現場的數據進行邏輯運算和數字運算等處理,並將結果返回給控制系統。

5、可以對從控制系統得到的以及自身產生的數據進行記錄存儲。在系統發生事故和故障的時候,利用記錄的運行工況數據和歷史數據,可以對系統故障原因等進行分析定位,責任追查等。通過對數據的質量統計分析,還可以提高自動化系統的運行效率,提升產品質量。

6、可以將工程運行的狀況、實時數據、歷史數據、警告和外部資料庫中的數據以及統計運算結果製作成報表,供運行和管理人員參考。

5. 什麼是GCC編譯器

Linux系統下的Gcc(GNU C Compiler)是GNU推出的功能強大、性能優越的多平台編譯器,是GNU的代表作品之一。gcc是可以在多種硬體平台上編譯出可執行程序的超級編譯器,其執行效率與一般的編譯器相比平均效率要高20%~30%。
Gcc編譯器能將C、C++語言源程序、匯程式化序和目標程序編譯、連接成可執行文件,如果沒有給出可執行文件的名字,gcc將生成一個名為a.out的文件。在Linux系統中,可執行文件沒有統一的後綴,系統從文件的屬性來區分可執行文件和不可執行文件。而gcc則通過後綴來區別輸入文件的類別,下面我們來介紹gcc所遵循的部分約定規則。
.c為後綴的文件,C語言源代碼文件;
.a為後綴的文件,是由目標文件構成的檔案庫文件;
.C,.cc或.cxx 為後綴的文件,是C++源代碼文件;
.h為後綴的文件,是程序所包含的頭文件;
.i 為後綴的文件,是已經預處理過的C源代碼文件;
.ii為後綴的文件,是已經預處理過的C++源代碼文件;
.m為後綴的文件,是Objective-C源代碼文件;
.o為後綴的文件,是編譯後的目標文件;
.s為後綴的文件,是匯編語言源代碼文件;
.S為後綴的文件,是經過預編譯的匯編語言源代碼文件。
Gcc的執行過程
雖然我們稱Gcc是C語言的編譯器,但使用gcc由C語言源代碼文件生成可執行文件的過程不僅僅是編譯的過程,而是要經歷四個相互關聯的步驟∶預處理(也稱預編譯,Preprocessing)、編譯(Compilation)、匯編(Assembly)和連接(Linking)。
命令gcc首先調用cpp進行預處理,在預處理過程中,對源代碼文件中的文件包含(include)、預編譯語句(如宏定義define等)進行分析。接著調用cc1進行編譯,這個階段根據輸入文件生成以.o為後綴的目標文件。匯編過程是針對匯編語言的步驟,調用as進行工作,一般來講,.S為後綴的匯編語言源代碼文件和匯編、.s為後綴的匯編語言文件經過預編譯和匯編之後都生成以.o為後綴的目標文件。當所有的目標文件都生成之後,gcc就調用ld來完成最後的關鍵性工作,這個階段就是連接。在連接階段,所有的目標文件被安排在可執行程序中的恰當的位置,同時,該程序所調用到的庫函數也從各自所在的檔案庫中連到合適的地方。

Gcc的基本用法和選項
在使用Gcc編譯器的時候,我們必須給出一系列必要的調用參數和文件名稱。Gcc編譯器的調用參數大約有100多個,其中多數參數我們可能根本就用不到,這里只介紹其中最基本、最常用的參數。
Gcc最基本的用法是∶gcc [options] [filenames]
其中options就是編譯器所需要的參數,filenames給出相關的文件名稱。
-c,只編譯,不連接成為可執行文件,編譯器只是由輸入的.c等源代碼文件生成.o為後綴的目標文件,通常用於編譯不包含主程序的子程序文件。
-o output_filename,確定輸出文件的名稱為output_filename,同時這個名稱不能和源文件同名。如果不給出這個選項,gcc就給出預設的可執行文件a.out。
-g,產生符號調試工具(GNU的gdb)所必要的符號資訊,要想對源代碼進行調試,我們就必須加入這個選項。
-O,對程序進行優化編譯、連接,採用這個選項,整個源代碼會在編譯、連接過程中進行優化處理,這樣產生的可執行文件的執行效率可以提高,但是,編譯、連接的速度就相應地要慢一些。
-O2,比-O更好的優化編譯、連接,當然整個編譯、連接過程會更慢。
-Idirname,將dirname所指出的目錄加入到程序頭文件目錄列表中,是在預編譯過程中使用的參數。C程序中的頭文件包含兩種情況∶
A)#include
B)#include 「myinc.h」
其中,A類使用尖括弧(< >),B類使用雙引號(「 」)。對於A類,預處理程序cpp在系統預設包含文件目錄(如/usr/include)中搜尋相應的文件,而對於B類,cpp在當前目錄中搜尋頭文件,這個選項的作用是告訴cpp,如果在當前目錄中沒有找到需要的文件,就到指定的dirname目錄中去尋找。在程序設計中,如果我們需要的這種包含文件分別分布在不同的目錄中,就需要逐個使用-I選項給出搜索路徑。
-Ldirname,將dirname所指出的目錄加入到程序函數檔案庫文件的目錄列表中,是在連接過程中使用的參數。在預設狀態下,連接程序ld在系統的預設路徑中(如/usr/lib)尋找所需要的檔案庫文件,這個選項告訴連接程序,首先到-L指定的目錄中去尋找,然後到系統預設路徑中尋找,如果函數庫存放在多個目錄下,就需要依次使用這個選項,給出相應的存放目錄。
-lname,在連接時,裝載名字為「libname.a」的函數庫,該函數庫位於系統預設的目錄或者由-L選項確定的目錄下。例如,-lm表示連接名為「libm.a」的數學函數庫。
上面我們簡要介紹了gcc編譯器最常用的功能和主要參數選項,更為詳盡的資料可以參看Linux系統的聯機幫助。
假定我們有一個程序名為test.c的C語言源代碼文件,要生成一個可執行文件,最簡單的辦法就是∶
gcc test.c
這時,預編譯、編譯連接一次完成,生成一個系統預設的名為a.out的可執行文件,對於稍為復雜的情況,比如有多個源代碼文件、需要連接檔案庫或者有其他比較特別的要求,就要給定適當的調用選項參數。再看一個簡單的例子。
整個源代碼程序由兩個文件testmain.c 和testsub.c組成,程序中使用了系統提供的數學庫,同時希望給出的可執行文件為test,這時的編譯命令可以是∶
gcc testmain.c testsub.c □lm □o test
其中,-lm表示連接系統的數學庫libm.a。

Gcc的錯誤類型及對策
Gcc編譯器如果發現源程序中有錯誤,就無法繼續進行,也無法生成最終的可執行文件。為了便於修改,gcc給出錯誤資訊,我們必須對這些錯誤資訊逐個進行分析、處理,並修改相應的語言,才能保證源代碼的正確編譯連接。gcc給出的錯誤資訊一般可以分為四大類,下面我們分別討論其產生的原因和對策。

第一類∶C語法錯誤
錯誤資訊∶文件source.c中第n行有語法錯誤(syntex errror)。這種類型的錯誤,一般都是C語言的語法錯誤,應該仔細檢查源代碼文件中第n行及該行之前的程序,有時也需要對該文件所包含的頭文件進行檢查。有些情況下,一個很簡單的語法錯誤,gcc會給出一大堆錯誤,我們最主要的是要保持清醒的頭腦,不要被其嚇倒,必要的時候再參考一下C語言的基本教材。
第二類∶頭文件錯誤
錯誤資訊∶找不到頭文件head.h(Can not find include file head.h)。這類錯誤是源代碼文件中的包含頭文件有問題,可能的原因有頭文件名錯誤、指定的頭文件所在目錄名錯誤等,也可能是錯誤地使用了雙引號和尖括弧。

第三類∶檔案庫錯誤
錯誤資訊∶連接程序找不到所需的函數庫,例如∶
ld: -lm: No such file or directory
這類錯誤是與目標文件相連接的函數庫有錯誤,可能的原因是函數庫名錯誤、指定的函數庫所在目錄名稱錯誤等,檢查的方法是使用find命令在可能的目錄中尋找相應的函數庫名,確定檔案庫及目錄的名稱並修改程序中及編譯選項中的名稱。
第四類∶未定義符號
錯誤資訊∶有未定義的符號(Undefined symbol)。這類錯誤是在連接過程中出現的,可能有兩種原因∶一是使用者自己定義的函數或者全局變數所在源代碼文件,沒有被編譯、連接,或者乾脆還沒有定義,這需要使用者根據實際情況修改源程序,給出全局變數或者函數的定義體;二是未定義的符號是一個標準的庫函數,在源程序中使用了該庫函數,而連接過程中還沒有給定相應的函數庫的名稱,或者是該檔案庫的目錄名稱有問題,這時需要使用檔案庫維護命令ar檢查我們需要的庫函數到底位於哪一個函數庫中,確定之後,修改gcc連接選項中的-l和-L項。
排除編譯、連接過程中的錯誤,應該說這只是程序設計中最簡單、最基本的一個步驟,可以說只是開了個頭。這個過程中的錯誤,只是我們在使用C語言描述一個演算法中所產生的錯誤,是比較容易排除的。我們寫一個程序,到編譯、連接通過為止,應該說剛剛開始,程序在運行過程中所出現的問題,是演算法設計有問題,說得更玄點是對問題的認識和理解不夠,還需要更加深入地測試、調試和修改。一個程序,稍為復雜的程序,往往要經過多次的編譯、連接和測試、修改。下面我們學習的程序維護、調試工具和版本維護就是在程序調試、測試過程中使用的,用來解決調測階段所出現的問題。窗體頂端
窗體底端

閱讀全文

與清醒異構編譯器相關的資料

熱點內容
vr怎麼看視頻演算法 瀏覽:84
手機app如何申報個人所得稅零申報 瀏覽:690
如何截獲手機app連接的ip 瀏覽:330
冰箱壓縮機是否需要電容 瀏覽:344
python列表每一行數據求和 瀏覽:274
自己有一台伺服器可以玩什麼 瀏覽:656
社會學波普諾pdf 瀏覽:584
解壓做食物的小視頻 瀏覽:758
pdf怎麼單獨設置文件夾 瀏覽:474
業務邏輯程序員 瀏覽:659
addto新建文件夾什麼意思 瀏覽:160
有伺服器地址怎麼安裝軟體 瀏覽:659
安卓如何完全清除數據 瀏覽:690
安卓安卓證書怎麼信任 瀏覽:53
伺服器被攻擊如何解決 瀏覽:221
學霸變成程序員 瀏覽:881
c語言編譯錯誤fatalerror 瀏覽:441
ipv4內部伺服器地址怎麼分配 瀏覽:464
java線程安全的方法 瀏覽:952
重復命令畫梯形 瀏覽:166