歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> Linux業界

李沫南談Firefox及其Gecko內核的開發

  這些年來,隨著浏覽器的發展,浏覽器引擎其實已經分為比較鮮明的幾派,比如IE 的Trident,Firefox 的Gecko等.由。IE 浏覽器的用戶量相對龐大許多,所以國內許多開發者和用戶可能對圍繞IE開發比較熟悉。那麼究竟圍繞Gecko開發是怎樣一種情況呢?技術上有哪些異同呢? 為此我特別采訪了一位擁有豐富Gecko內核開發經驗的程序員李沫南。

Ericlee:請介紹一下你自己好嗎?比如你從事Albatross開發的經歷。

李 沫南:我2002年煙台大學土木工程系畢業,在濟南浪潮做了近一年.net上的ORMaping。03年11月加入北京共創開源軟件有限公司,從事開源浏 覽器(起初是epiphany,後來是firebird)的開發。Albatross是在Firefox 1.0.x版本分支上改進的,在863項目《Linux下兼容IE擴展的功能增強性浏覽器》的基礎上,由當時共創開源浏覽器部開發的。主要改進功能改進可 參考:
http://albatross.cosoft.org.cn/future.html

2006年3月,從公司離職。目前主要從事基於浏覽器的互聯網爬蟲和社區(站內)搜索引擎的開發。http://www.coreseek.cn

Ericlee:浏覽器的內核其實可以分為Trident、Gecko,Presto、WebCore等等幾種。請您談談Gecko 內核哪點最吸引您?它有與其它內核相比有哪些不同。

李 沫南:如果都無法獲取源碼的情況下,IE的Trident內核實際上是最開放的。其接口設計的相對來講最成熟,對外部應用程序支持的情況最好,這也是為什 麼IE外殼的浏覽器非常多的原因之一。從我個人的經驗看,越了解IE,越發現其設計的巧妙之處。Oprera的Presto,我用Opera不多,不好評 論;
WebCore和khtml 本身沒有本地Window版本,這限制其在win32上的普及,不過,由於khtml本身不大,也許在移動設備上存在市場機會。

Gecko 核心設計的相對成熟,在無法獲取源碼的情況下,開放程度僅次於IE。由於其本身Open Source。實際上是目前開發程度最好的浏覽器。Firefox的擴展能夠給浏覽者帶來完全不同的浏覽體驗。我個人因為接觸的比較多,對於Gecko的 缺點比優點了解的可能更多一些。其中,最大的麻煩是系統各部分和JavaScirpt綁定的太緊,導致很難加入對新的腳本語言的支持;其次,應該承認微軟 IE的很多設計方便了網頁開發人員的開發,而Firefox在這些地方做的還很不夠,當然這裡裡面有技術上的問題,也有法律上的問題。

Ericlee:國內許多浏覽器開發都是外殼開發,請談談Gecko內核開發在技術上與外殼開發會面對哪些不同的挑戰?

李沫南:浏覽器的外殼開發和內核開發完全是兩個不同的領域。相對而言,我認為內核開發更簡單一些,因為其用戶需求簡單而明確,面對的使用者也都是程序員;外殼開發要面對最終用戶,要考慮適應不同的用戶使用習慣,特別是還要和各種彈出廣告的網站做斗爭.

在 技術上,其實內核開發和外殼開發很多地方是相通的,我認識的一些外殼開發者可以在非常短的時間內成為Gecko內核的開發者。不過內核開發和外殼開發還是 有很多不同的,其中最大的區別在於引擎的可信程度,在外殼開發時,可以假設完全信任渲染引擎,假設其沒有Bug;而在浏覽器內核開發時,這些假設不存在。 另外,對於程序員的要求也有很大的不同,特別是浏覽器的DOM、插件、Layout和java script模塊,這些模塊的部分代碼對於性能的要求非常嚴 格。我曾經犯了一個錯誤,在發行代碼中多寫了一句調試用的printf,結果導致CPU占有率增加了接近30%。而同樣的問題,在外殼開發中則很少會遇 到。

同樣,在外殼開發中的鼠標手勢、廣告過濾和書簽管理等功能在內核開發中根本不會遇到,可以這麼認為,雖然外殼和內核都是浏覽器開發,但實際上是截然不同的兩種軟件。

Ericlee:目前市場上有許多基於Gecko內核的浏覽器,請談談你對他們的看法?

李沫南:市面上Gecko內核的浏覽器主要分兩類,一類是以Mozilla Firefox為代表的,用XUL作為界面描述語言的浏覽器:這類浏覽器往往繼承了Firefox擴展性好的優點,早前的Madfox和Albatross就是這一類型的浏覽器。

另一類是使用本地圖形庫作為界面的Gecko內核的浏覽器:其中有Linux平台上epiphany、Galeon等;在win32上由Orca Browser、K-Meleon等。

一般而言,采用本地圖形庫的浏覽器資源占用較少、速度相對較快,這一點和IE外殼浏覽器一樣,不過缺少了采用XUL作界面帶來的擴展性。同時,由於Mozilla的嵌入接口提供的對外接口相對有限,導致目前使用Gecko做內核的采用本地圖形庫的浏覽器的功能都相對有限。

其中,Win32平台上相對比較好的是Orca Browser,其實現了對應於IE平台的浏覽器 Avant Browser 90%以上的功能。

Ericlee:Firefox 這兩年越來越引起人們的關注,去年11月發布的1.5版非常的成功,請您談談對Firefox浏覽器的看法。在技術上比Trident內核浏覽器有哪些優勢?

李沫南:最大的優勢,全部源代碼開放

在渲染方面的優勢,由於Firefox使用了動態布局引擎,其顯示網頁內容的速度比IE 快的多。這個我認為是Firefox最大的有時,顯示網頁的速度快也帶來了浏覽者工作效率的提升。
安全方面,我不認為Firefox會比IE好多少,就其實現上,也並沒有為安全做特別的設計。如果FF有IE一樣的用戶基數,也會有同樣多的漏洞。不過,由於開源的原因,用戶基數的增加同時也會帶來開發者的增加,考慮到這些因素,總體而言Firefox將更安全。

Ericlee:許多人都說Firefox2.0比1.5版並沒有什麼進步,你是這麼認為嗎?

李 沫南:2.0的代碼我還沒有時間仔細研究,不過評價一款有自己內核的浏覽器,最終界面僅僅是一個方面。浏覽器引擎實際上更接近.net和JavaVM的角 色,就想你很難通過javaVM的命令行界面來評價JavaVM的改進一樣,你也很難通過最終用戶界面來評價一款浏覽器內核。

Ericlee:從開發角度看,比如對DOM裡的對象原型的擴展,Firefox與IE哪個浏覽器的擴展性更好?
在 兩個技術層面有兩個不同的結論。在內核層面,在同樣都有源碼的前提下,Firefox對DOM對象的擴展沒有IE方便,這也是過去一直困擾我們的問題;不 過在java script方面,Firefox比IE強大,早期的Albatross其中有一部分IE特性的支持就是通過腳本來實現的。

Ericlee:微軟重新對 IE浏覽器的投入, 使浏覽器市場競爭變得更加激烈,你如何看將來的浏覽器發展方向?(浏覽器除了作為網絡內容閱讀,與應用程序結合的角度看,會如何發展?)

李沫南:我個人認為,未來浏覽器終將消失,扮演和.net平台和JavaVM類似的角色。

Ericlee:你如何看待國內的開源浏覽器開發氛圍?

李 沫南:其實,開發浏覽器內核並不難,至少沒有大家想像的難,比開發操作系統內核簡單多了。一般一個有中等c++開發經驗的程序員學習1-2個月就可以上 手。至於具體能作到什麼層次,需要看個人的努力程度了。至於開發Firefox浏覽器外殼(做擴展)則相對簡單一些,有一定的網頁制作基礎就可以了。

國 內的開源浏覽器開發氛圍,怎麼說呢?和國內的開源軟件的大環境很像,公司的領導還很難接受自己投資開發的軟件拿出去讓其他人“白”用,而國內的開源浏覽器 開發最大的問題在於高質量的開發人員太少,當然,這可能和國內的大環境有關。如果不能很好的解決程序員的生存和發展問題,開發人員短缺的問題將一直存在。

Ericlee:可否向廣大軟件開發者分享一下你的軟件開發成功經驗?

李沫南:我現在離成功還很遠,只是一個合適的卒子放到了合適的位置而已。{具體還需要增加,主要強調數學和基礎知識在程序開發中的重要性}

原文地址: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1361531




Copyright © Linux教程網 All Rights Reserved