邵慧華
摘要:隨著HTML5技術(shù)的發(fā)展和應(yīng)用,原生應(yīng)用和web應(yīng)用的使用體驗(yàn)逐漸接近,而web應(yīng)用在跨平臺(tái),易升級(jí)等方面的優(yōu)勢(shì)卻是原生應(yīng)用無(wú)法企及的。在可預(yù)期的未來(lái),web應(yīng)用將逐漸取代原生應(yīng)用,瀏覽器將部分替代操作系統(tǒng)。
關(guān)鍵詞:瀏覽器技術(shù);渲染引擎;blink內(nèi)核
一、引言
瀏覽器是訪問(wèn)互聯(lián)網(wǎng)的主要入口,是我們?nèi)粘I钪斜夭豢缮俚纳暇W(wǎng)工具,歷來(lái)都是各大互聯(lián)網(wǎng)公司的必爭(zhēng)之地,微軟,谷歌,蘋(píng)果等都有自己研發(fā)的瀏覽器。本文介紹了瀏覽器的發(fā)展歷史和現(xiàn)狀,技術(shù)原理及其發(fā)展趨勢(shì)和展望。
二、瀏覽器的歷史和現(xiàn)狀
(一)瀏覽器的發(fā)展簡(jiǎn)史
1、WorldWideWeb發(fā)布
1991年,世界上第一個(gè)瀏覽器WorldWideWeb由Web 之父Tim Berners-Lee 設(shè)計(jì),后改名為Nexus。
2、Mosaic發(fā)布
1993年,伊利諾伊大學(xué)厄巴納-香檳分校的NCSA組織發(fā)布Mosaic。
3、Netscape Navigator發(fā)布
1994年,Marc Andreessen 帶領(lǐng) Mosaic 的程序員成立了Netscape 公司,并發(fā)布了第一款商業(yè)瀏覽器 Netscape Navigator。
4、IE發(fā)布
1995年,微軟針對(duì) Netscape 發(fā)布了他們自己的瀏覽器IE,第一場(chǎng)瀏覽器之戰(zhàn)爆發(fā)。
5、Opera發(fā)布
1996年,挪威Telenor公司,推出了 Opera,并在兩年后進(jìn)軍移動(dòng)市場(chǎng),推出 Opera 的移動(dòng)版。
6、Firefox發(fā)布
1998年,Netscape成立了Mozilla 基金會(huì)組織,并開(kāi)源其瀏覽器代碼,并于2002年發(fā)布Firefox瀏覽器。
7、Safari發(fā)布
2003年,蘋(píng)果發(fā)布Safari瀏覽器,其內(nèi)核為基于KHTML開(kāi)發(fā)的webkit。
8、Chrome發(fā)布
2008年,谷歌發(fā)布Chrome瀏覽器,其內(nèi)核為webkit;2013年,谷歌將其內(nèi)核改變?yōu)榛趙ebkit研發(fā)的blink內(nèi)核。
9、Microsoft Edge發(fā)布
2015年,微軟發(fā)布Microsoft Edge瀏覽器,使用內(nèi)核為EdgeHTML,2020年,內(nèi)核更改為谷歌的blink。
(二)主流瀏覽器介紹
主流瀏覽器是有一定市場(chǎng)份額且有自己獨(dú)立研發(fā)內(nèi)核的瀏覽器,也叫原生瀏覽器,當(dāng)前國(guó)內(nèi)的瀏覽器一般都是基于國(guó)外的瀏覽器內(nèi)核進(jìn)行研發(fā)的產(chǎn)品。當(dāng)前主流瀏覽器總大概有以下幾種:
1、IE瀏覽器
IE瀏覽器是微軟公司開(kāi)發(fā)的,內(nèi)核為T(mén)rident。1995年,微軟通過(guò)把IE瀏覽器捆綁到windows操作系統(tǒng)中提供給用戶免費(fèi)使用的方式來(lái)推廣,很快,IE瀏覽器變占據(jù)了主流市場(chǎng)。后來(lái),隨著反壟斷訴訟,以及IE瀏覽器的技術(shù)和體驗(yàn)上的落后,微軟于2015年推出使用新內(nèi)核EdgeHTML的Edge瀏覽器,2020年Edge瀏覽器正式將其內(nèi)核切換為谷歌的blink。
2、Opera瀏覽器
Opera瀏覽器是挪威Opera Software ASA公司制作的支持多頁(yè)面標(biāo)簽式瀏覽的網(wǎng)絡(luò)瀏覽器,是一款跨平臺(tái)瀏覽器,可以在Windows、Mac和Linux三個(gè)操作系統(tǒng)平臺(tái)上運(yùn)行,其內(nèi)核一開(kāi)始為Presto,2013年以后開(kāi)始使用谷歌研發(fā)的blink內(nèi)核。2016年,Opera瀏覽器被昆侖萬(wàn)維、奇虎360收購(gòu)。
3、Firefox瀏覽器
Firefox瀏覽器是一個(gè)由Mozilla基金會(huì)開(kāi)發(fā)的自由及開(kāi)放源代碼的網(wǎng)頁(yè)瀏覽器,在2002年發(fā)布,使用Gecko內(nèi)核。
4、Safari瀏覽器
Safari瀏覽器是蘋(píng)果公司于2003年開(kāi)發(fā)的一款瀏覽器,其內(nèi)核基于KHTML內(nèi)核研發(fā)的Webkit內(nèi)核,最新的內(nèi)核使用Webkit2。
5、Chrome瀏覽器
Chrome瀏覽器是谷歌公司于2008年發(fā)布的一款瀏覽器,其內(nèi)核最初為webkit,后來(lái)谷歌公司基于webkit上自研了blink內(nèi)核,于是在2013年其內(nèi)核更改為blink。
三、瀏覽器技術(shù)介紹
(一)瀏覽器的功能和構(gòu)成
瀏覽器的主要功能是將用戶選擇的web資源呈現(xiàn)出來(lái),它需要從服務(wù)器請(qǐng)求資源,并將其顯示在瀏覽器窗口中,資源的格式通常是HTML,也包括PDF、image及其他格式,用戶用URI(Uniform Resource Identifier統(tǒng)一資源標(biāo)識(shí)符)來(lái)指定所請(qǐng)求資源的位置。HTML和CSS規(guī)范中規(guī)定了瀏覽器解釋HTML文檔的方式,由W3C組織對(duì)這些規(guī)范進(jìn)行維護(hù),W3C是負(fù)責(zé)制定web標(biāo)準(zhǔn)的組織。
用戶接口:包括地址欄、后退/前進(jìn)按鈕、書(shū)簽?zāi)夸浀?,除了用?lái)顯示所請(qǐng)求頁(yè)面的主窗口之外的其他部分
瀏覽器引擎API:用來(lái)查詢及操作渲染引擎的接口
渲染引擎:用來(lái)顯示請(qǐng)求的內(nèi)容,負(fù)責(zé)解析html及css,并將解析后的結(jié)果顯示出來(lái)
網(wǎng)絡(luò)接口:用來(lái)完成網(wǎng)絡(luò)調(diào)用,例如http請(qǐng)求,具有平臺(tái)無(wú)關(guān)的接口,可以在不同平臺(tái)上工作
JS引擎:用來(lái)解釋執(zhí)行JS代碼
UI組件:用來(lái)繪制類似組合選擇框及對(duì)話框等基本組件,具有不特定于某個(gè)平臺(tái)的通用接口,底層使用操作系統(tǒng)的用戶接口。
數(shù)據(jù)存儲(chǔ):屬于持久層,瀏覽器需要在硬盤(pán)中保存類似cookie的各種數(shù)據(jù)
(二)渲染引擎運(yùn)行原理
渲染引擎的職責(zé)就是渲染,即在瀏覽器窗口中顯示所請(qǐng)求的內(nèi)容。默認(rèn)情況下,渲染引擎可以顯示html、xml文檔及圖片,它也可以借助插件(一種瀏覽器擴(kuò)展)顯示其他類型數(shù)據(jù),例如使用PDF閱讀器插件顯示PDF格式等
渲染引擎首先通過(guò)網(wǎng)絡(luò)獲得所請(qǐng)求文檔的內(nèi)容,通常以8K分塊的方式完成。
渲染引擎開(kāi)始解析html,并將標(biāo)簽轉(zhuǎn)化為內(nèi)容樹(shù)中的dom節(jié)點(diǎn)。接著,它解析外部CSS文件及style標(biāo)簽中的樣式信息。這些樣式信息以及html中的可見(jiàn)性指令將被用來(lái)構(gòu)建另一棵樹(shù)——render樹(shù)。
Render樹(shù)由一些包含有顏色和大小等屬性的矩形組成,它們將被按照正確的順序顯示到屏幕上。
Render樹(shù)構(gòu)建好了之后,將會(huì)執(zhí)行布局過(guò)程,它將確定每個(gè)節(jié)點(diǎn)在屏幕上的確切坐標(biāo)。再下一步就是繪制,即遍歷render樹(shù),并使用UI后端層繪制每個(gè)節(jié)點(diǎn)。
這個(gè)過(guò)程是逐步完成的,為了更好的用戶體驗(yàn),渲染引擎將會(huì)盡可能早的將內(nèi)容呈現(xiàn)到屏幕上,并不會(huì)等到所有的html都解析完成之后再去構(gòu)建和布局render樹(shù)。它是解析完一部分內(nèi)容就顯示一部分內(nèi)容,同時(shí),可能還在通過(guò)網(wǎng)絡(luò)下載其余內(nèi)容。
四、瀏覽器技術(shù)的發(fā)展和展望
(一)Web應(yīng)用將逐漸取代原生應(yīng)用
隨著HTML5技術(shù)的發(fā)展和應(yīng)用,原生應(yīng)用和web應(yīng)用的使用體驗(yàn)逐漸接近,而web應(yīng)用在跨平臺(tái),易升級(jí)等方面的優(yōu)勢(shì)卻是原生應(yīng)用無(wú)法企及的。因此在可預(yù)期的將來(lái),web應(yīng)用將逐漸取代原生應(yīng)用,除了通用類基礎(chǔ)軟件和要求比較高的游戲外,其它的程序都逐步往瀏覽器上搬遷。目前這一進(jìn)程已經(jīng)開(kāi)始,未來(lái)可能還將加速。
(二)瀏覽器將部分替代操作系統(tǒng)
原生應(yīng)用逐漸被web應(yīng)用取代,更少的軟件被安裝到操作系統(tǒng)中,也就意味著操作系統(tǒng)重要性的降低。HTML5提供的Web數(shù)據(jù)存儲(chǔ)和離線數(shù)據(jù)存儲(chǔ)功能,更多的接口能讓瀏覽器具有更強(qiáng)的處理本地?cái)?shù)據(jù)的能力,這就使得瀏覽器可以部分代替操作系統(tǒng),瀏覽器某種程度上將成為通用的平臺(tái),用戶無(wú)需離開(kāi)瀏覽器就能完成絕大部分的任務(wù)。
(三)blink內(nèi)核有望一統(tǒng)天下
瀏覽器內(nèi)核最終有可能統(tǒng)一,最可能完成一統(tǒng)天下任務(wù)的是谷歌研發(fā)的blink內(nèi)核。當(dāng)前最主要的兩個(gè)瀏覽器內(nèi)核為蘋(píng)果的webkit和谷歌的blink,除了在蘋(píng)果終端設(shè)備上的瀏覽器中使用webkit內(nèi)核外,當(dāng)前主要的瀏覽器基本上使用的都是blink瀏覽器。
參考文獻(xiàn)
[1]金成明,張捷,趙永彬,等. 異構(gòu)操作系統(tǒng)瀏覽器多核支持技術(shù)及改造方法[J]. 電子技術(shù)應(yīng)用,2016(z1):41-45.DOI:10.16157/j.issn.0258-7998.2016.S1.015.
[2]王灝漢. Web瀏覽器客戶端取證技術(shù)的探索與應(yīng)用[J]. 網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2020(10):168-172. DOI:10.3969/j.issn. 1009- 6833.2020.10.099.