比如我有壹個表哥,作為壹個大學生,壹個“專業”的IT人,經常敢給我壹些“指點”。有壹天,我用IE瀏覽器被她看到了,女孩壹臉不屑的指給我看,說,妳拿這個破IE幹什麽?很容易有毒!現在用的是傲遊,沒毒!當時真想問她“沒毒”是不是電線桿上貼的那種。我馬上測了壹下,傲遊的危害遠遠小於電線桿,就沒問了。但我了解到了群眾眼中的“不同瀏覽器”是什麽。現在我鄭重的告訴妳,這些瀏覽器其實就是IE-微軟的IE瀏覽器。包括傲遊、騰訊TT、世界之窗等。,其實只是給IE加了壹層皮,給IE增加了壹些功能,屏蔽了壹些功能控件。
拉開馬甲,還是IE ~ IE瀏覽器自帶Windows系統,所以很多人覺得開發壹個瀏覽器真的很難。既然在大家的系統裏,那我用IE的內核別人也不會覺得是IE,沒必要。能做這麽難的事,太棒了!於是,出現了很多“果丹皮式”的瀏覽器。這裏我再多說兩句:我沒有詆毀傲遊等瀏覽器的意思,只是從內部分析壹下情況。請繞道,分公司就在我隔壁。謝謝妳。
這些“牡丹皮”瀏覽器與IE、火狐等有什麽本質區別?
我們來膚淺的看壹下瀏覽器的內部:壹個完整的瀏覽器需要完成以下任務:
1,HTTP或HTTPS與服務器交互;
2.解釋HTML語言,靜態文本元素,後面擴展解釋HTML -XML的母體;
3.解釋GIF、JPG、PNG等格式的圖形圖像並在網頁上展示;
4.解釋Javascript腳本語言,將其應用擴展到後來的DHTML,AJAX等。
5.解釋CSS級聯樣式表;
6.添加、刪除和檢查Cookie文件;
7、軟件本身的控制機制,如收藏夾、歷史、打印、熱鍵等等;
8.兼容各種控件,包括AciiveX、video elements、Flash、JAVA小程序等。
9、提供相應的安全驗證機制,如SSL、電子證書、數字指紋等應用。
10,以及其他。作為我不那麽自信的標誌,我加了這個:)
瀏覽器的發展史基本都是這個順序,從第壹項開始,慢慢發展。最早的瀏覽器甚至不能顯示圖片,這壹點很有意思,壹度被作為索引電話簿的首選工具。作為瀏覽器,解析HTML是最基本的能力。在瀏覽器多年的開發和積累過程中,開發者慢慢將瀏覽器的HTML解析部分分離成壹個相對獨立的模塊單元來渲染用戶界面。其實第壹個這麽做的人是微軟。
1997 10年6月,隨著Internet Explorer第四版的發布,壹個名為Trident(也稱MSHTML)的“渲染引擎”發布了。這套“渲染引擎”不僅被IE用來解釋HTML,還被很多Windows應用使用。比如我們熟悉的Windows系統中的幫助文件,內部文檔的解讀都是由系統內嵌的Trident引擎來完成的,還有Office套件的壹些功能等等。
Trident,也就是MSHTML,作為Windows系統API的壹部分,在開發Windows應用時可以調用它來做相關的解析工作。但在當時,“渲染引擎”這個概念並沒有引起廣泛關註。後來Mozilla也發布了它的排版引擎Gecko,作為壹個獨立於瀏覽器的模塊。雖然和微軟是同壹個動作,但是作為開源軟件,影響力是不壹樣的。因為除了Mozilla的瀏覽器,其他瀏覽器或者開源程序也可以使用Gecko作為自己的排版引擎。不像微軟,使用Gecko不再局限於Windows平臺!
此後,“渲染引擎”受到高度關註,這個詞也逐漸被廣泛使用。所謂“渲染引擎”,中文叫:網頁排版引擎,又稱HTML渲染引擎或瀏覽器的圖片界面。而且,更多的時候,我們稱之為“內核”。比如我們常說的傲遊屬於IE內核。其實就是IE的“牡丹皮”。後來傲遊大概覺得自己經常被別人打倒真的是壹件很不愉快的事情,於是出了壹個很厲害的招:不僅可以調用IE的三叉戟,還可以調用火狐的壁虎,隨意切換,雙內核!妳不能再說我是IE的馬甲了吧?
我是“IE還是火狐”的馬甲?這麽說太拐彎抹角了,沒人會這麽說,也就沒人再提底了。明智之舉。!事實上,我對開發者辛勤工作的敬佩就像長江的洪水,在這裏只是壹句玩笑話,壹句廢話,不要當真。
再說壹個更高級的模塊,也是目前突飛猛進的領域:JavaScript,網景開發的面向對象腳本語言,在瀏覽器中的作用比美國總統還大(……)。網景引入瀏覽器的JavaScript語言也完全基於ECMAScript規範。
作為壹種標準的腳本語言,JavaScript的引入為互聯網交互創造了堅實的基礎。應該說我們能有今天網頁上各種神奇的應用,多虧了網景/Mozilla!(如果像微軟壹樣另起爐竈,恐怕今天也就止步於十年前的水平了),從中受益最大的企業應該是谷歌,它的經典服務絕對離不開Javascript。從這個角度來說,我想知道谷歌能否幫助Mozilla推廣Firefox作為壹種感謝?
哈哈。而微軟IE則沒有使用完全符合ECMAScript規範的JavaScript,而是把自己的另壹種技術:JScript強加給用戶。JScript這個名字很可能是為了和JavaScript混淆,但是請記住壹點:JScript是微軟的註冊商標!IE中使用的JScript和ECMAScript(或JavaScript)有交集。它們不僅沒有完全使用ECMAScript標準定義的方法和屬性,還添加了很多自己的私有定義。這些方法和屬性只能被IE識別,不能被其他未授權的瀏覽器識別(專利)。
這壹現實不僅讓無數開發者頭疼,也成為了其他瀏覽器發展的絆腳石。但是由於種種原因,大眾會下意識的認為微軟也是JavaScript。這也是我上壹篇文章開頭說“讓我們悲憤地討論”的原因。Internet Explorer作為monopoly的必要組成部分,壹直在使用包括JScript在內的壹系列專有網頁標準擴展,其他還有HTML、CSS、DOM(比如Office中那些令人眼花繚亂的豐富格式),以至於很多網站只能通過IE正常顯示。這也是IE擁有絕對市場時非常難以撼動的因素之壹。
話題跑題了,言歸正傳。在互聯網發展的中後期,DHTML和Ajax的應用變得越來越廣泛和重要,所以瀏覽器的開發者把精力都投入到了Javascript執行的效率和擴展性上。慢慢的,瀏覽器開發者從網頁排版引擎中衍生出這部分功能,形成壹個獨立的模塊:腳本解釋引擎,也叫Javascript解釋引擎,對於某些瀏覽器來說,叫Javascript解析架構。在這方面,谷歌是領先的。
應該說這也是合理的。如上所述,作為壹個新興的IT巨頭,Google的大部分核心項目都是以Javascript作為客戶端的主要手段來實現的,比如著名的Gmail、Google Map、Google Docs,以及核心中的核心:AdWords、AdSense等等。在Ajax應用技術中,Google是當之無愧的王者,高效的解釋引擎當然對Google的發展極其重要!就像菜刀對悍婦壹樣,哦不,壹把利劍對壹個英雄是如此重要!谷歌在2008年底推出的Chrome瀏覽器使用了來自丹麥的開源腳本解釋引擎V8,以提高Javascript解析的速度。這臺發動機不出名,但很出彩。
傳統上,所有瀏覽器都使用“解釋”的方法來執行JavaScript。Chrome的V8引擎采用JIT(Just-In-Time instant compilation)方式,將JavaScript編譯成二進制文件,放入內存執行。我壹直以為這是SUN為JAVA提出的。查了壹下資料,發現80年代就有了。但可以肯定的是,即時編譯技術壹直是JAVA平臺的突出特點。後來,微軟的。NET也吸取了過去的教訓,終於讓自己的服務器系統不再是低效率的代名詞。時代在進步,現在連腳本語言都JIT了。
正是這種方法使得V8引擎處理網頁中的JavaScript非常快,尤其是在Ajax應用中,據說比IE快6700多萬倍。(“據說”有時候不太靠譜)
當然,在Mozilla這邊,它並沒有停止。Firefox3.1還增加了壹個專門解析Javascript的引擎:TraceMonkey。這個TraceMonkey還使用了JIT技術,據說比IE快7800多萬倍。(和IE相比,軟柿子不捏白。)TraceMonkey還在本地SpiderMonkey引擎中集成了壹種叫做trace trees的技術,提高JavaScript效率和運行速度。
有點亂?spider monkey+tracing = trace monkey,總之根據傳說,很神奇!看看蘋果的Safari瀏覽器,Safari也有自己強大的JavaScript引擎。作為壹貫的市場遠見,早在2002年,蘋果就將Webkit排版引擎分為WebCore和JavaScriptCore,這兩個引擎都是開源的。WebCore負責渲染網頁——網頁排版引擎,JavaScriptCore負責解釋JavaScript腳本——腳本解析引擎。
2008年6月,蘋果將JavaScriptCore重新命名為SquirrelFish,並將其從項目中分離出來。不久後升級到SquirrelFish Extreme,重新編譯。顯然,下壹代瀏覽器的準備工作已經全面展開。
蘋果聲稱在SquirrelFish Extreme engine中使用了四種不同的技術來實現更好的性能:字節碼優化、多態內聯緩存、輕量級上下文線程JIT編輯器以及使用JIT架構的新正則表達式引擎。技術上的名氣聽起來很暈,可以明顯看出幾大瀏覽器都是有備而來(來個熊~)。這時候可能有人會問,這些最新的腳本解釋引擎誰快?我很想要壹個客觀公正的答案。但是如果進行這個測試,由於大家都出奇的快,數據波動的因素又太多太復雜,所以最大的幹擾因素有兩個:測試環境和測試人員。
換句話說:谷歌的測試結果中Chrome最快,蘋果的測試報告中Safari最快,Mozilla的測試報告中Firefox最快。總的來說,上述三家公司的速度差距不算太大,但毫無疑問,IE是最慢的,慢得離譜。這就是為什麽微軟不熱衷於Javascript速度測試,其他公司天天做評測報告,而且都是糾正例子:他們確實是第壹,那個窮學生微軟是最後!特別指出的是,並不是每個瀏覽器都把腳本解釋引擎分離出來,比如IE,解釋腳本的工作還是由Trident來做。
這充分說明,如果倒數第二天不是微軟,只有壹種可能:微軟學生那天拉肚子,沒來上課!。。。-_-;
摘要
安全推薦:福克斯
兼容:IE
尋求小系統足跡:谷歌
因為漫遊雙核,基於lz的要求,推薦漫遊。