理解WebKit和Chromium: Web应用和Web运行环境
轉(zhuǎn)載請注明原文地址:http://blog.csdn.net/milado_nju
注:鑒于這一領(lǐng)域非常熱,自己也投身其中,會單獨(dú)開辟一個專題介紹Web應(yīng)用和Web運(yùn)行環(huán)境。
## 概述
Web已經(jīng)從web網(wǎng)頁向web應(yīng)用(web application)方向發(fā)展,這一推動需要加入大量現(xiàn)有操作系統(tǒng)提供的能力,例如各個傳感器的功能已經(jīng)通過JavaScript接口提供給了web應(yīng)用,文件或者存儲系統(tǒng),用戶交互,網(wǎng)絡(luò)連接,應(yīng)用的生命周期,安裝和卸載等管理。這些方面有些已經(jīng)成熟,但是還有更多的在制定過程中。雖然標(biāo)準(zhǔn)化組織在不斷加入新標(biāo)準(zhǔn),但是現(xiàn)在還有很多缺失的地方需要補(bǔ)上。
支撐HTML5的框架也已經(jīng)從瀏覽器向Web運(yùn)行平臺轉(zhuǎn)變,這是一重大轉(zhuǎn)變。因?yàn)橹盀g覽器只是運(yùn)行網(wǎng)頁,而Web運(yùn)行平臺可以管理和運(yùn)行Web應(yīng)用,所以對于上面提到的所有功能都需要支持,而有些瀏覽器并不需要支持。雖然現(xiàn)在很多web運(yùn)行平臺是從瀏覽器基礎(chǔ)上開發(fā)的,但是這并不意味這兩者是同一回事。
## Web應(yīng)用
根據(jù)W3C規(guī)范的定義,可以將Web應(yīng)用分成兩種類型,第一種稱為Packaged Application,也就是該應(yīng)用包含了自身所需要的所有資源。第二種稱為Hosted Application,不是Packaged Application類型的應(yīng)用都屬于此類,所以也就是它包含了一些外部的資源。為什么會有如此劃分?主要是因?yàn)樾枨蠛桶踩矫娴目紤],后面會介紹到。
在一些應(yīng)用場景下需要PackagedApplication,第一是因?yàn)閼?yīng)用市場的需要,很多市場需要審核應(yīng)用使用哪些權(quán)限,而不是無限制的使用任何平臺提供的能力,這點(diǎn)對于安全性尤為重要。第二是因?yàn)殚_發(fā)者的需要,使用Web和HTML5技術(shù)開發(fā)并不意味著需要提供服務(wù)器并把Web應(yīng)用布置在服務(wù)器上。像本地應(yīng)用一樣,Web應(yīng)用也能夠獨(dú)立的工作。第三是因?yàn)橛脩舻男枰?#xff0c;很多時候用戶希望能夠離線情況下仍然能夠使用該應(yīng)用,就像很多本地應(yīng)用一樣,一旦離線情況下不能使用,對于用戶體驗(yàn)是個考驗(yàn)。
同普通網(wǎng)頁不同的是,一個Web應(yīng)用通常包含一個稱為清單(manifest)的文件,該文件的目的跟很多系統(tǒng)例如Android上的應(yīng)用程序的清單文件類似,就是為了定義該應(yīng)用的一些信息。今后會做清單文件的詳細(xì)介紹。
## Web運(yùn)行環(huán)境
Web應(yīng)用需要支撐的運(yùn)行環(huán)境才能夠工作,就像本地應(yīng)用需要操作系統(tǒng)才能工作,能夠支撐Web應(yīng)用運(yùn)行的平臺或者運(yùn)行環(huán)境,稱為Web運(yùn)行環(huán)境(也可以叫Web平臺)。那么一個Web運(yùn)行環(huán)境包含哪些功能或者特性呢?
描述了Web運(yùn)行平臺的功能及同Web應(yīng)用關(guān)系。首先當(dāng)然能夠支持眾多HTML5功能,包括基本功能如CSS,JavaScript,Canvas2D等等,也包括設(shè)備的能力,包括如設(shè)備能力,如Device Info,Geolocation,Motion傳感器,攝像頭等等能力。
其次是對存儲的要求,因?yàn)閃eb應(yīng)用需要能夠訪問文件系統(tǒng)或者使用大量的存儲空間,特別是離線應(yīng)用,這里面包括offline cache,File System, File API等方面的規(guī)范支持,這些對于應(yīng)用特別重要。
再次是打包的支持,也就是將HTML/CSS/JavaScript文件和其它資源文件打包成一定格式的包,這里面重要的一點(diǎn)就是對清單的支持。清單描述了Web應(yīng)用的基本設(shè)置,這些設(shè)置對于網(wǎng)頁而言是不需要的,但是Web應(yīng)用需要這些來定義它作為一個應(yīng)用程序的行為,例如前面說的全屏,窗口大小,圖標(biāo)等等。
然后是應(yīng)用程序的運(yùn)行模式,生命周期方面的支持。Web運(yùn)行環(huán)境能夠通知Web應(yīng)用啟動,掛起,恢復(fù)和銷毀等狀態(tài)信息。
最后是能夠啟動并運(yùn)行Web應(yīng)用,是的Web應(yīng)用使用起來跟本地應(yīng)用使用體驗(yàn)相同或者類似,而不僅僅網(wǎng)頁瀏覽的方式,這里面包括開啟應(yīng)用,關(guān)閉應(yīng)用,升級應(yīng)用和管理應(yīng)用等等。
按照Web運(yùn)行環(huán)境的工作模式,目前可以將它分成三種類型:
第一是操作系統(tǒng)本身就是支持Web應(yīng)用,所以通常稱為Web操作系統(tǒng),典型的例子如Tizen,Chrome OS,Firefox OS等等。因?yàn)檎麄€操作系統(tǒng)就是為了Web應(yīng)用設(shè)計(jì)的,所以Web應(yīng)用在系統(tǒng)中是第一等公民。
第二是瀏覽器或者其它類似的產(chǎn)品中包含支持Web應(yīng)用的能力,典型的例子是Crosswalk的Tizen版(英特爾公司的開源項(xiàng)目),Chromium的桌面版和Pokki等。它的特性是Web應(yīng)用都是由該運(yùn)行環(huán)境管理,對于操作系統(tǒng)而言,它看不到Web應(yīng)用的存在,而且每個Web應(yīng)用也不會變成一個本地應(yīng)用。因?yàn)楸旧聿僮飨到y(tǒng)只是支持本地應(yīng)用,所以Web應(yīng)用對操作系統(tǒng)而言是透明的,對于操作系統(tǒng)而言,它看到的是多個運(yùn)行環(huán)境的實(shí)例。
第三是以一個獨(dú)立的框架和本地應(yīng)用存在于傳統(tǒng)的操作系統(tǒng),本身該Web運(yùn)行環(huán)境依賴與操作系統(tǒng)才能運(yùn)行,而Web應(yīng)用工作在該Web運(yùn)行環(huán)境中的,典型的例子如Crosswalk(Android版)和Cordova(也就是PhoneGap使用的開源項(xiàng)目)。它同第二類型的區(qū)別在于,Web應(yīng)用本身會被打包成本地應(yīng)用,所以操作系統(tǒng)認(rèn)為每個打包后的Web應(yīng)用就是一個本地應(yīng)用,每個Web應(yīng)用之后的啟動方式跟本地應(yīng)用相同,當(dāng)然,Web應(yīng)用是由Web運(yùn)行平臺這個本地應(yīng)用啟動并運(yùn)行的。## Crosswalk
Crosswalk項(xiàng)目是由英特爾公司發(fā)起的一個開源項(xiàng)目,該項(xiàng)目基于Blink和Chromium等開源項(xiàng)目,其目的是打造一個跨不同操作系統(tǒng)的Web運(yùn)行環(huán)境,包括Android、Tizen、Linux、Windows、Mac等眾多平臺。如前面描述,主要是該Web運(yùn)行環(huán)境能夠作為操作系統(tǒng)的一個獨(dú)立模塊或者說是本地應(yīng)用,而Crosswalk本身不是一個操作系統(tǒng),具體請讀者查看https://www.crosswalk-project.org/。不同于Cordova項(xiàng)目,Crosswalk不僅僅是提供一些Web接口的擴(kuò)展,不是簡單的基于系統(tǒng)缺省的嵌入式應(yīng)用接口例如WebView,而是使用新Blink和Chromium的能力,加強(qiáng)對HTML5能力的支持,同時加入了Web作為一個運(yùn)行平臺的各種能力,從功能上看,它對Web應(yīng)用的支持和規(guī)范的支持更加完整,下圖描述了Web應(yīng)用在Crosswalk上的基本工作過程。
圖中可以看到在Android系統(tǒng)和Tizen系統(tǒng)上兩者是不一樣,這是因?yàn)門izen本身是一個直接支持Web應(yīng)用的操作系統(tǒng),所以它支持直接將Web應(yīng)用安裝到系統(tǒng)中而不需要額外的處理。當(dāng)用戶需要啟動Web應(yīng)用的時候,由Crosswalk加載Web應(yīng)用的設(shè)置并使用運(yùn)行環(huán)境來啟動該Web應(yīng)用。
在Android系統(tǒng)上,那就是不同的故事,因?yàn)锳ndroid系統(tǒng)只是支持本地應(yīng)用,為此需要特殊的工具將Web應(yīng)用轉(zhuǎn)換成Android系統(tǒng)的APK。這一工具當(dāng)然需要滿足Android上的特別需求,這里有兩個目的:
第一是因?yàn)閃eb應(yīng)用中有名稱,圖標(biāo),加載入口等等信息,這些信息需要設(shè)置到Android的AndroidManifest.xml中去,這樣,當(dāng)用戶安裝該APK的時候,名稱和圖標(biāo)等信息就會顯示在應(yīng)用的列表中,跟其它本地應(yīng)用看起來一樣。
第二是滿足Android系統(tǒng)只能從Application和Activity類來啟動,不是Web應(yīng)用。為此,Crosswalk項(xiàng)目提供了一些代碼來讓Android系統(tǒng)啟動Crosswalk運(yùn)行平臺,而該運(yùn)行平臺根據(jù)Web應(yīng)用的設(shè)置來啟動Web應(yīng)用。開發(fā)者如希望使用Crosswalk來打包Web應(yīng)用到Android APK,可以從https://github.com/crosswalk-project/crosswalk上根據(jù)文檔來實(shí)現(xiàn)。對于Crosswalk的詳細(xì)介紹,筆者會在今逐步展開來。
參考資料
1.??http://www.w3.org/TR/runtime/
2.?https://www.crosswalk-project.org/
3.?https://github.com/crosswalk-project/crosswalk
by yongsheng@chromium.org
轉(zhuǎn)載于:https://www.cnblogs.com/xiaowangba/p/6313847.html
總結(jié)
以上是生活随笔為你收集整理的理解WebKit和Chromium: Web应用和Web运行环境的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 台式机ubuntu12.04独立显卡更换
- 下一篇: 国家开放大学计算机应用基础模块3客观题,