日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

漫谈Google的Native Client(NaCl)技术

發(fā)布時(shí)間:2024/4/15 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 漫谈Google的Native Client(NaCl)技术 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Native Client簡(jiǎn)介

Native Client是Google在瀏覽器領(lǐng)域推出的一個(gè)開(kāi)源技術(shù),它允許在瀏覽器內(nèi)編譯Web應(yīng)用程序,并執(zhí)行原生的編譯好的代碼。Native Client有以下幾個(gè)優(yōu)勢(shì)(參考Google官方英文介紹):

  • 為Web提供更多的圖形,音頻以及其他功能:可以直接在web上執(zhí)行了原生的2D,3D圖形渲染程序(對(duì)Web游戲很有用),播放音視頻,響應(yīng)鼠標(biāo)鍵盤(pán)事件,多線程執(zhí)行代碼等等,而這一切,不需要瀏覽器安裝任何插件。
  • 良好的可移植性:一個(gè)Web程序,只需要開(kāi)發(fā)一份代碼,即可以在所有平臺(tái)(包括Windows,linux,Mac等)運(yùn)行。
  • 高安全性:安裝不被信任的桌面程序一級(jí)瀏覽器插件,可能帶來(lái)很高的安全風(fēng)險(xiǎn)(如程序攜帶木馬,病毒)。而Native client使用了雙層沙盒(sandbox)設(shè)計(jì)來(lái)保護(hù)用戶的本地資源。Native Client的架構(gòu)可以保證web要應(yīng)用的安全性,并且取得和原聲代碼相同或相近的性能。
  • 方便從桌面遷移:很多開(kāi)發(fā)廠商之前花了大力氣開(kāi)發(fā)桌面程序,隨著云計(jì)算的到來(lái),越來(lái)越多的程序會(huì)被移植到互聯(lián)網(wǎng)上,由于NaCl支持直接執(zhí)行C/C++/Java等代碼,Native Client技術(shù)可以簡(jiǎn)化移植過(guò)程,減少移植成本。
  • 高性能:Native Client可以讓web應(yīng)用已接近桌面程序的性能運(yùn)行,這就為在瀏覽器內(nèi)運(yùn)行性能苛刻的程序提供了基礎(chǔ),如大型3D游戲。

Native Client技術(shù)概要

有人說(shuō),Native Client技術(shù)是抄襲ActiveX的,個(gè)人不以為然,ActiveX主要是基于COM的,是操作系統(tǒng)提供一套可重用的接口給web應(yīng)用,而NaCl則是獨(dú)立于操作系統(tǒng)的。說(shuō)實(shí)話,感覺(jué)這技術(shù)更像是抄襲Adobe的Alchemy技術(shù),Achemy技術(shù)主要目的是解決Flash的低性能,這和Native Client是接近的,并且,這兩種技術(shù)都采用了LLVM技術(shù),具體可以看這篇文章http://yjrl.iteye.com/blog/320665。

LLVM?是 Low Level Virtual Machine 的簡(jiǎn)稱(chēng),這個(gè)庫(kù)提供了與編譯器相關(guān)的支持,能夠進(jìn)行程序語(yǔ)言的編譯期優(yōu)化、鏈接優(yōu)化、在線編譯優(yōu)化、代碼生成。簡(jiǎn)而言之,可以作為多種語(yǔ)言編譯器的后端來(lái)使用。而基于LLVM ,開(kāi)源社區(qū)開(kāi)發(fā)出了Clang,一個(gè)C++ 編寫(xiě)、基于 LLVM、發(fā)布于 LLVM BSD 許可證下的 C/C++/Objective C/Objective C++ 編譯器,其目標(biāo)(之一)就是超越 GCC。

Google 的Native Client的關(guān)鍵技術(shù)就是PNaCl(Portable Native Client Executables),而PNaCl實(shí)現(xiàn)的一個(gè)關(guān)鍵就是LLVM。下面是整個(gè)PNaCl結(jié)構(gòu)示意圖:?


在PNaCl中,開(kāi)發(fā)者通過(guò)一些前端編譯器將C/C++/Fortan源代碼用對(duì)應(yīng)的編譯器前端編譯成LLVM的中間字節(jié)碼,并且進(jìn)行優(yōu)化以及鏈接(這一整套流程可以在Google提供的SDK中完成)。之后,服務(wù)器將鏈接好的字節(jié)碼進(jìn)行分發(fā),在客戶端,通過(guò)LLVM的后端將字節(jié)碼翻譯成本地的二進(jìn)制對(duì)象文件,并且和本地的相關(guān)庫(kù)鏈接,最終執(zhí)行完成(這些功能應(yīng)該是集成在瀏覽器中的)。

另外,為了保證安全性,NaCl采用了沙盒技術(shù),具體可以看這篇論文:《Native Client: A Sandbox for Portable, Untrusted x86 Native Code》。

參考:

http://www.lingcc.com/2010/06/02/10955/

http://nativeclient.googlecode.com/svn/data/site/pnacl.pdf

總結(jié)

以上是生活随笔為你收集整理的漫谈Google的Native Client(NaCl)技术的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。