XUL (發音成 "zool") 是 Mozilla 以 XML 為基礎的使用者介面語言,讓你盡情地開發各式各樣的跨平台應用程式,不論是否在連線到網際網路的狀態皆可。這些應用程式可以藉由簡單地變更文字,圖案與版面佈局,來達到客製化的目的,因此可以輕易地本土化以推廣到各種市場去。如果您已經是熟習 Dynamic HTML (DHTML) 的網頁設計師,那您將可以很快地學會 XUL 並且可以馬上開始動手建構應用程式了。


這份文件將介紹一些比較吸引人的理由給網頁設計師,來應用 XUL 以及 Mozilla 相關技術來撰寫跨平台的應用程式。這也將充分說明 Mozilla 要設計 XUL 的動機,以及為什麼 Mozilla 平台是使用 XUL 建構起來的。XUL 的重要特色與優勢將會接著以支援 Mozilla 技術的方式來呈現。最後,有個關於 "使用 XUL 所撰寫之 Calendar" 的小小個案研討,作為補充。



[編輯] 重要特色與優勢

























強大的, 以元件為基礎的標示語言 XUL 的目標是建造跨平台的應用程式, 相對於原本拿來設計網頁的 DHTML. 為了這個因素, XUL 設計成為應用程式的加工組件(application artifacts), 諸如: 視窗(windows), 標註(labels), 按鈕(buttons)等; 用來取代頁面(pages), 大標題(heading levels), 連結(hypertext links)等.

事實上, 許多開發人員已經嘗試在他們的 DHTML 網頁應用程式中使用圖像介面的效果, 但這其中的代價就是複雜以及效能, 而且沒有任何標準可以支援.


建構在現存標準的基礎上 XUL 是植基於 W3C 標準 XML 1.0 的一個 XML 語言. 使用 XUL 的應用程式是建構於這些 W3C 標準技術之上: HTML 4.0; Cascading Style Sheets (CSS) 1 and 2; Document Object Model (DOM) Levels 1 and 2; javascript? 1.5, 包含 ECMA-262 Edition 3 (ECMAscript); XML 1.0.

mozilla.org 正進一步地尋求 W3C 為 eXtensible Binding Language (XBL) 標準化. (參考下面的 "支援技術").


平台可攜性 跟 HTML 一樣, XUL 被設計成與平台無關的, 可以很容易地讓應用程式在任何 Mozilla 存在的作業系統上面使用. 想想看現在有多麼廣泛的平台支援 Mozilla, 這是以 XUL 技術來開發應用程式當中, 最令人讚嘆的特色.

因為 XUL 提供了使用者介面組成元件的抽象層, 因此實現了這個保證: 只要寫一次, 即可在任何地方使用 (write-once, run-anywhere). 所有 Mozilla 核心應用程式的使用者介面都是用 XUL 所撰寫的, 並且該單一程式碼, 在所有 Mozilla 平台上都支援.


分離介面呈現與程式流程 大部分網頁應用程式沒落的主因就是, 把使用者介面跟程式流程緊緊的結合在一起了. 這在一個團隊的環境中是個頗為難的問題, 因為這兩部分所需的技能通常是分散在不同的人身上.

XUL 很清楚地分離出應用程式的各個組成: 程式流程 ("content" 包含有 XUL, XBL, 與 javascript?), 介面呈現 ("skin" 包含了 CSS 和影像), 與特定語言的文字標籤 ("locale" 包含 DTD 以及在 .properties 檔案中的特定語言字串包). XUL 應用程式的版面佈局與外觀可以被自由地改變, 不受程式撰寫的影響. 甚至, 應用程式可以被地方化至任何語言或地區, 完全獨立於程式流程或是介面呈現.


對應用程式作這種程度的分離所得到的結果是: 程式設計師可以很容易地維護程式, 設計師可以輕鬆地變更設計樣式, 而各個語言的翻譯人員也可以自行完成翻譯工作. 這樣子獨立的工作流程, 相較於以 HTML 為基礎的應用程式更容易協同工作, 也減少了整個系統在穩定性與品質上的衝擊.


輕輕鬆鬆自訂, 本地化, 打品牌 另一個由分離程式流程, 介面呈現和語言文字所直接造成的特色, 即是不同的使用者或使用群可以很容易的修改成所需要的樣子.

程式開發人員可以對應用程式只維護其主要程式碼, 然後藉由使用不同的外觀介面(skin)來自訂圖示與品牌觀感給他們不同的顧客群. 一個以英文介面撰寫與開發的應用程式, 可以被翻譯成法文給相同需求的顧客使用. 當這些改變被廣泛地使用在這個應用程式的時候, 他們也可以從程式流程與介面呈現之中獨立出來, 來分享給所有的自訂版本.




[編輯] 支援技術


這裡有一些 Mozilla 所用來支援 XUL 撰寫跨平台網頁應用程式的技術.

















XBL eXtensible Bindings Language (XBL) 是一種標記語言 (markup language), 定義了新的物件元素以及給 XUL 介面物件(widget)的"bindings". 藉由 XBL, 開發人員可以為 XUL 介面物件定義出新的內容, 為 XUL 介面物件增添新的事件觸發處理, 並可以增加新的使用介面特性與方法(method). 事實上, XBL 將使得開發人員得以利用自訂現有的標籤(tag)或是新增他們所需要的標籤來擴充 XUL.

藉由使用 XBL, 開發人員可以輕易地建構出所想要的使用者介面物件, 諸如: 進度表, 別緻的彈出式選單, 甚至是工具列或搜尋表單. 這些自訂物件可以在指定標籤與其屬性之後, 使用在各個 XUL 應用程式當中.


Overlays Overlays 是用來描述使用介面之額外內容的 XUL 檔案. 他們是一種增添使用介面的通用機制, 用以增加額外的元件, 覆蓋掉 XUL 檔案中不再支援的使用者介面, 並且可以重新利用使用者介面當中的一些片段.

Overlays 對於自訂與擴充現有應用程式而言是個很強大的機制, 因為他們是以兩種相關但卻又幾乎完全不同的方式在運作著. 某種程度上看來, Overlays 可以說是 "引入(include)" 其他語言檔案, 因為一個應用程式可能指定在其定義中引入一個 Overlay. 但是 Overlays 也可以只用於外觀上, 使得設計人員可以在某個應用程式上頭使用 Overlays, 而不需要改變其原始程式.


在實作上, 這使得開發人員只需對其應用程式維護一組程式碼, 然後再為客戶應用各自自訂的外型, 或是引入特別的功能, 而這些都完全獨立於主程式碼. 這導致整個解決方案的簡化, 與降低維護成本.


Overlays 對於那些想要為 Mozilla 增添新功能但又希望保有著作權的軟體開發人員而言還有個特點. 這兩種執照聲明: Netscape Public License (NPL) 和 Mozilla Public License (MPL) 都要求那些有對原始程式(Mozilla 所提供的那些原始程式碼)做過修改的開發人員, 要釋放出他們變更之後的程式碼給他們的顧客. Overlays 可以在變更著作權的情況下用來為 Mozilla 增添新的功能, 而不會污染了最原始的開放原始程式碼.


XPCOM/XPConnect XPCOM 與 XPConnect 都是加強技術, 將外部函數庫與 XUL 應用程式整合在一起.

XPCOM, 代表的是跨平台組成物件模型 (Cross Platform Component Object Model), 是個用來撰寫跨平台與軟體模組化的一個架構. XPCOM 的組成元件可以用 C, C++, 和 javascript 來撰寫, 並且可以在這些環境下來開發: C, C++, javascript, Python, 與 Perl 擴充集.


XPConnect 這個技術是用來製造出簡單的 XPCOM 與 javascript 之間的溝通. XPConnect 允許 javascript 物件正大光明地存取與運用 XPCOM 物件. 他也讓 javascript 物件可以表示成 XPCOM 相容介面以供 XPCOM 物件呼叫使用.


將兩者合在一起, XPCOM 和 XPConnect 使得開發人員可以設計那些需要使用編譯式語言的效能或是存取作業系統等級的 XUL 應用程式.


XPInstall XPInstall, Mozilla 的跨平台安裝技術, 提供了一個標準的方式將 XUL 應用程式的各個元件包裝成一個安裝檔案, 來讓 Mozilla 可以下載並且執行之.

XPInstall 讓使用者可以毫不費力地從網際網路或是公司主機來安裝新的 XUL 應用程式. 要安裝一個新的應用程式, 使用者只要在網頁上或是電子郵件訊息中的超連結點一下滑鼠, 然後在安裝對話方塊中允許安裝新的應用程式即可.


狼翔月影 發表在 痞客邦 PIXNET 留言(0) 人氣()