古詩詞大全網 - 成語查詢 - Mozilla 的 Gecko 引擎有哪些優勢和問題

Mozilla 的 Gecko 引擎有哪些優勢和問題

作者:米嘉

鏈接:/question/20193935/answer/15010924

來源:知乎

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

當年Firefox從Mozilla項目中涅槃而出的時候,第壹個要解決的問題就是Layout,而Layout是Gecko的核心組件,從那時到現在Gecko經歷了超過十年的進化時間,所以,先說最大的問題就是他已經變的異常龐大,代碼結構非常復雜,基本上到現在很少有人還能夠清楚的知道gecko的每壹個細節。

我個人覺得Gecko的魅力存在於他的架構設計上,現在可能已經沒有清楚的界限分隔,所以下面提供的內容在某個時期不壹定是屬於Gecko部分的,不過從現在的角度來說Gecko代表Firefox整個的內核引擎。

XUL提供統壹的界面描述語言,對於控件的制作完全使用描述性/解釋性的語言就可以完成,並且由於XUL提供的超強描述能力,基本可以在任何有XUL的地方進行擴展,所以理論上Firefox的Addon可以插到系統的任何地方,這個跟Chrome的擴展API是有本質區別的,XUL在這些年也發展的越來越龐大,最後核心部分提取為XULRunner,Firefox/Thunderbird或者任何基於Mozilla/Gecko技術的應用都可以理解為是運行在XULRunner這個虛擬機上的。而Mozilla也希望有開發人員基於XULRunner直接開發桌面應用。

XPCOM是Gecko中又壹個利器,本身概念等同於甚至超越同期的COM/DCOM等組件技術的,瀏覽器中大量的基礎組件都是通過XPCOM的方式提供的,從文件系統到網絡訪問,從書簽訪問到外觀控制,沒有統計過Gecko中提供的XPCOM壹***有多少,估計數量壹定很多,而XPCOM也是提供Gecko擴展能力的超強武器,是軟件復用的有力封裝工具,擴展本身接入到平臺上之後提供的XPCOM服務可以被其他擴展使用,大大提供軟件復用能力。

XPConnect提供了多語言的接入能力,妳可以使用XUL/JavaScript,可以使用C/C++、Java、Python來實現XPCOM、Module等,將這些語言制作的二進制擴展接入到平臺中,當然他是從屬於XPCOM的。

我覺得阻擋Gecko前進的最大問題就是復雜度的與日俱增,太多的東西沒有被隔離而直接被接入平臺,在提供超強的擴展能力同時,也帶入了更多的復雜度——可閱讀能力差、代碼復雜、維護難度高。從渲染角度我覺得差距不壹定很大,現在對於Render/Layout的實現大家的實現基礎基本是壹致的,但是能夠看到Webkit對於新CSS標準的實現很快,代碼進化很快能夠完成,而Gecko就顯得老態龍鐘。而從JavaScript角度來說,Google V8的絕密飛行領先所有瀏覽器廠商兩年多,這個大家都不太好追,Chrome內核優勢大大的。