2006/11/10

Firefox XUL

我一直很喜歡 Firefox, 其實對它了解不多,不過若以現在的眼光來看,我不會再以 Plugin 來做 Application 間的溝通工作。早期以 Plugin 來收發 message queue 是出於這樣會比較快速,但是事實上也讓移植性變得比較麻煩。也就是說,若我們可以透過 AJax 這種非同步的方式處理 UI 的呈現問題,其實速度會變得不那麼重要,但是更換版本就會變得較容易。另一方面,使用標準的方式也會讓其他事情變得較簡單,例如要呈現 RemoteUI 時,較容易彼此溝通與控制。

基於上述的思考,Firefox 有幾個東西對有興趣的人就變得很重要。

首先是 XUL, 這在 Firefox 裡已經有不少實際的 application on firefox 可以取得 source code, 比較常看到的是 chat, calculator, ftp 等。用 XUL 來寫基於 firefox 的應用程式,這樣會讓做 UI 的人比較麻煩,因為它並非標準 HTML/XML/Javascript,但是當我們對 XUL 的認知夠多時,要移轉也會較容易,而 XUL 的好處是 你不必叫出整個瀏覽器,而且,更重要的一點是新版的 firefox 已經整合 SVG 以及 sqlite, 這會讓我們在寫 XUL application 時有較佳的外觀與保密性,資料的維護也會比較容易。基於安全考量,似乎 firefox 不打算開放一般網頁使用 sqlite 及一些 XUL 能用的功能。

上面有提到 SVG 及 sqlite, 我想這個也是值得進一步研究的課題。但是我現在的工作跟 firefox 還沒什麼關係,沒什麼時間玩,就先寫下來供日後參考。而另一個重要課題是 AJax, 這雖然不像 DOM, Javascript 或 XUL, Plugin 等屬於專門的技術,而是一堆現在技術的整合,但是我想好好研究 AJax 是非常重要的,因為在 GUI 有必要與其他應用程式溝通時,可以達到非同步的效果非常重要。也就是,網頁的畫面可以不變動的情況下,就可以完成資料的取得,取得後再來更新畫面,在使用上會比較平順。而這一點用來取代原先 Plugin 應該就足夠了。畢竟透過 AJax 是以類似 CGI 的方式運作,可以做到目前網頁可以做到的事,也就是幾乎所有想做的都可以做到。當然,對像動畫效果的 GUI 無法像 flash 那麼好,但是那是「工具」的成熟度問題,其實我個人覺得 SVG/AJax 的搭配可以做到任何 flash 能做的事。

最後,firefox 比較缺的就是它目前還沒有辦法做到與X切割,若能靠 DirectFB 就能顯現 Firefox 的話,我想我就不會再考慮其他選擇了。也就是說,若你對 GUI 有興趣的話,DirectFB 也值得注意。directfb 其實已經整合進 Gtk 裡了,只是 Gtk 還無法與Xlib切割的很好,也希望 Gtk 能多多加油!

0 意見: