開發一款瀏覽器難點有哪些?
不限定pc還是移動客戶端。
瀏覽器的兩個關鍵部分,布局引擎和JavaScript解釋器。
布局引擎就是我們常說的瀏覽器的內核,主要處理HTML和CSS。簡單的說,就是他決定了什麼東西該在什麼地方怎麼樣顯示。對於網頁這種視覺工程來說,布局引擎的重要程度不言而喻。
對於布局引擎的難點,大概有這些方面。
對標準的支持和擴展: 有一些標準的內容可能會難以實現,或者會帶來一些安全的問題,所以各大瀏覽器對於標準都會有一些的裁剪,而另外又有一些拓展。
布局性能: 布局引擎的性能,包括內存、CPU等指標,能夠直接影響用戶的體驗。簡單來說就是顯示快不快,佔用內存多不多。
其他: 類型穩定性、可拓展性這樣的一些其他類型軟體共有的特點。
JavaScript解釋器本來應該是瀏覽器內核的一部分,但是現在前端大量對JavaScript的應用,和瀏覽器廠商對這個部分的重視,開始分離出來了。既然拿出來了,JavaScript解釋器的性能,包括時間性能、內存性能這些因素就很重要了,需要各種優化編譯過程,優化生成代碼,優化指令的工作。
其他的一些難點,就是一些軟體上通用的東西,如何挖掘用戶需求,如何讓用戶使用得更滿意,比如單窗口向多標籤的轉變,快速撥號,滑鼠手勢這些功能。
然後就是一個好看的界面。
@余天升 的答案不錯。不過就實際可行的開發策略就是集成一個現有的 open source 引擎,比如 WebKit 和 V8。難度主要在集成 (integration)。—— 曾經有篇 blog 說一般的框圖都是 component 大,中間連接的箭頭細。其實按照工作量來說應該倒過來。說的就是這個意思。
很少有人會不用 libjpeg、libpng、libz 而自己開發的吧。我的理想是每種 parser 在全宇宙中只有一個實現!這個問題要看你問的是技術難點還是非技術難點。
如果是非技術難點,最大的就是人才和資金。如果找不到合適的人才,籌不到足夠的資金,開發工作是否能開始都是個問題。
如果是作為商業產品開發,就隨之而來另一個難點:盈利方式。現在免費瀏覽器滿天飛,你花了錢開發了瀏覽器,如何與其他產品競爭,如何收回成本甚至盈利。
再看技術難點,余天升說的比較全面。但順序上,我覺得穩定性和可靠性要更重要一些。對於幾乎一切軟體,這兩點都是最重要的。只不過要求的標準看要定多高了。瀏覽器肯定不需要銀行系統那麼高的可靠性和穩定性。
另外,從技術上看,你是要重新開發一個渲染引擎還是利用現有引擎。如果要重新開發引擎,那麼難點就會多很多。各種協議、標準的支持,自身的特性,性能都是不得不考慮的問題。
假如你真的開始了自己的項目,一定記得寫博客給大家共享經驗教訓喲。
避嫌(一般是國內的用國外的開源引擎就會引來一大堆噴子)
別把功能太誇大了
弄的簡單點,不要太多功能,流暢和速度最重要
用戶感覺,坐等科技人員~
首先開發瀏覽器與開發瀏覽器內核是兩個級別的難度。一。如果不做瀏覽器內核,只做「殼」,難度只有架構設計與實現(保證流暢--不卡不死快速);還有由於產品定位所引入的新的功能。二。如果做內核,則排版引擎有難度(不僅僅要支持W3C標準,還要一定的兼容性,這個也是區分不同瀏覽器內核的標誌);腳本引擎也有一定的難度,也是既要支持標準,同樣也要高性能;由於做內核所面對的各種兼容性問題;整體架構設計與實現(保證流暢--不卡不死快速)。
JS引擎和布局引擎是瀏覽器核心模塊中的比較複雜的2個,實際上布局之後的渲染過程也相當複雜,而且現在瀏覽器都有硬體加速,渲染都有多個路徑完成。另外還有些新出現的功能,像webgl等,也是比較獨立的模塊。瀏覽器越來越龐大,已然是半個操作系統了。
難點就是門檻降低了,
渲染引擎和腳本引擎都有一些現成的,不用再開發了,但是競爭也更激烈了,想脫穎而出太難了。
非科技人員,純用戶淺談,權當拋磚引玉了!
- 引擎
- UI
- 後期維護
推薦閱讀:
※IT 從業人員都用什麼瀏覽器?為什麼?
※開發一款瀏覽器內核需要學習哪些方面的知識?
※Chrome 有沒有可以下載優酷等網站視頻的插件?
※《神探夏洛克》里Sherlock使用Windows Vista操作系統和IE8瀏覽器,這符合Sherlock的性格嗎?
※你覺得體驗比較好的瀏覽器是哪款?為什麼?