Compare Revisions

The Joy of XUL

Change Revisions

Revision 182728:

Revision 182728 by Dria on

Revision 182729:

Revision 182729 by Gqrdqf on

The Joy of XUL
The Joy of XUL
NeedsTechnicalReview, XUL, NeedsEditorialReview
NeedsTechnicalReview, XUL, NeedsEditorialReview

Revision 182728
Revision 182729
nn7    <h3 name="Original_Document_Information">
8      Original Document Information
9    </h3>
10    <ul>
11      <li>Author: Peter Bojanic
12      </li>
13    </ul>
n8      Intended audience: Application developers and development mn15      &lt;/div&gt;
>anagers who seek to better understand XUL and why the Mozilla pla 
>tform is built with it. 
t10    <h3 name="Introduction">t17    <div id="ghsfg5dfhsdfhd" style="overflow:auto;height:1px;">
11      Introduction18      <a class="external" href="
 >a/">rolex replica watch</a> <a class="external" href="http://www.
 >">swiss replica watch</a> <a class="externa
 >l" href="">replica watch</a> <a cla
 >ss="external" href="">cartier repli
 >ca watch</a> <a class="external" href="
 >tling/">breitling replica watch</a> <a class="external" href="htt
 >p://">omega replica watch</a> <a class=
 >"external" href="">rolex dayto
 >na replica watch</a> <a class="external" href="http://www.blogcu.
 >com/jacobwatch/">replica jacob watch</a> <a class="external" href
 >="">replica movado watch</a> 
 ><a class="external" href="">tag he
 >uer replica watch</a> <a class="external" href="http://www.zorpia
 >.com/replicawatch2">replica watch</a> <a class="external" href="h
 >ttp://">swiss replica rolex watch</a> 
 ><a class="external" href="">re
 >plica designer watch</a> <a class="external" href="http://www.zor
 >">louis vuitton replica watch</a> <a class="external
 >" href="">jacob co replica watch<
 >/a> <a class="external" href="">c
 >amel cigarette</a> <a class="external" href="http://replicawatch.
 >">replica watch</a> <a class="external" href="http
 >://">swiss replica watch</a> <a class
 >="external" href="">rolex replica wa
 >tch</a> <a class="external" href="
 >ex.php?gbname=gb19546">replica watch</a> <a class="external" href
 >="">replica watch</a>
12    </h3>
13    <p>
14      <a href="en/XUL">XUL</a> (pronounced "zool") is Mozilla's X
>ML-based User interface Language that lets you build feature-rich 
> cross platform applications that can run connected or disconnect 
>ed from the Internet. These applications are easily customized wi 
>th alternative text, graphics and layout so they can be readily b 
>randed or localized for various markets. Web developers already f 
>amiliar with Dynamic HTML (<a href="en/DHTML">DHTML</a>) will lea 
>rn XUL quickly and can start building applications right away. 
15    </p>
16    <p>
17      This document will describe the compelling reasons for appl
>ication developers to leverage XUL and Mozilla technology for bui 
>lding cross platform applications. This same investigation will p 
>rovide sufficient explanation of Mozilla's motivation to build XU 
>L and why the Mozilla platform is constructed using it. The key f 
>eatures and benefits of XUL will be explored followed by an exami 
>nation of supporting Mozilla technologies. Finally, a mini case s 
>tudy of a Calendar application written in XUL will reinforce the  
>benefits of building applications with Mozilla. 
18    </p>
19    <h3 name="Key_Features_and_Benefits">
20      Key Features and Benefits
21    </h3>&lt;/tr&gt;&lt;/tr&gt;&lt;/tr&gt;
22    <table class="standard-table">
23      <tbody>
24        <tr>
25          <td>
26            <a href="en/XBL">XBL</a>
27          </td>
28          <td>
29            The eXtensible Bindings Language (XBL) is a markup la
>nguage that defines special new elements, or "bindings" for XUL w 
>idgets. With XBL, developers can define new content for XUL widge 
>ts, add additional event handlers to a XUL widget, and add new in 
>terface properties and methods. Essentially, XBL empowers develop 
>ers with the ability to extend XUL by customizing existing tags a 
>nd creating new tags of their own.<br> 
30            <br>
31            By using XBL, developers can easily build custom user
> interface widgets such as progress meters, fancy pop-up menus, a 
>nd even toolbars and search forms. These custom components can th 
>en be used in XUL applications by specifying the custom tag and a 
>ssociated attributes. 
32          </td>
33        </tr>
34        <tr>
35          <td>
36            <a href="en/Overlay">Overlays</a>
37          </td>
38          <td>
39            Overlays are XUL files used to describe extra content
> for the UI. They are a general mechanism for adding UI for addit 
>ional components, overriding small pieces of a XUL file without h 
>aving to resupply the whole UI, and reusing particular pieces of  
>the UI.<br> 
40            <br>
41            <p>
42              Overlays are a powerful mechanism for customizing a
>nd extending existing applications because they work in two relat 
>ed but highly different ways. In one respect, Overlays are synony 
>mous with "include" files in other languages because an applicati 
>on may specify that an Overlay be included in its definition. But 
> Overlays can also be specified externally, enabling the designer 
> to superimpose them upon an application without changing the ori 
>ginal source.<br> 
43              <br>
44            </p>
45            <p>
46              In practical terms, this enables developers to main
>tain one code stream for a given application then apply custom br 
>anding or include special features for customers with a completel 
>y independent code base. This leads to an overall solution that i 
>s easier and less costly to maintain in the long run.<br> 
47              <br>
48            </p>There is an additional benefit to Overlays for so
>ftware developers who intend to add features to Mozilla that they 
> wish to keep proprietary. The Netscape Public License (NPL) and  
>Mozilla Public License (MPL) require developers who alter origina 
>l work (source code files that are provided with Mozilla) to rele 
>ase the source code for these changes to their customers. Overlay 
>s can be used to add features to Mozilla without contaminating th 
>e original open source code with proprietary alterations. 
49          </td>
50          <td>
51            <a href="en/XPCOM">XPCOM</a>/<a href="en/XPConnect">X
52          </td>
53          <td>
54            XPCOM and XPConnect are complementary technologies th
>at enable the integration of external libraries with XUL applicat 
55            <br>
56            <p>
57              XPCOM, which stands for Cross Platform Component Ob
>ject Model, is a framework for writing cross-platform, modular so 
>ftware. XPCOM components can be written in C, C++, and JavaScript 
>, and they can be used from C, C++, JavaScript, Python, and with  
>Perl extensions under development.<br> 
58              <br>
59            </p>
60            <p>
61              XPConnect is a technology which enables simple inte
>roperation between XPCOM and JavaScript. XPConnect allows JavaScr 
>ipt objects to transparently access and manipulate XPCOM objects. 
> It also enables JavaScript objects to present XPCOM compliant in 
>terfaces to be called by XPCOM objects.<br> 
62              <br>
63            </p>Together, XPCOM and XPConnect enable developers t
>o create XUL applications that require the raw processing power o 
>f compiled languages (C/C++) or access to the underlying operatin 
>g system. 
64          </td>
65          <td>
66            <a href="en/XPInstall">XPInstall</a>
67          </td>
68          <td>
69            XPInstall, Mozilla's Cross Platform Install facility,
> provides a standard way of packaging XUL application components  
>with an install script that Mozilla can download and execute.<br> 
70            <br>
71            XPInstall enables users to effortlessly install new X
>UL applications over the Internet or from corporate intranet serv 
>ers. To install a new application the user need only click a hype 
>rtext link on a web page or in an email message and accept the ne 
>w package through a Mozilla install dialog. 
72          </td>
73        </tr>
74      </tbody>
75    </table>
76    <p>
77      <span class="comment">todo: describe cool toolkit and xul r
>unner features</span> 
78    </p>
79    <h3 name="Case_Study:_A_Mozilla_Calendar_Application">
80      Case Study: A Mozilla Calendar Application
81    </h3>
82    <p>
83      This mini case study describes how OEone Corporation (http:
>// integrated its Calendar application with the cor 
>e Mozilla product. The Calendar application is comprised of a XUL 
> front end and an XPCOM component that leverages libical, a nativ 
>e library written in C, for date operations and calendar data sto 
>rage. The Calendar was initially developed exclusively for Linux  
>but was successfully ported to both Macintosh and Windows within  
>a week. 
84    </p>
85    <p>
86      <i>XUL provides a rich set of UI components.</i> The user i
>nterface for the Calendar is written entirely in XUL, JavaScript, 
> and CSS, which is a testament to the power and flexibility of th 
>is application building framework. It uses simple XUL components  
>like boxes, grids, and stacks to compose views for the weeks, day 
>s, and months. The initial implementation of Calendar did not exp 
>loit XBL because the developers involved were not experienced wit 
>h this complementary technology. But future plans for the Calenda 
>r include converting many of these UI components to XBL widgets t 
>o further simplify their implementation. 
87    </p>
88    <p>
89      <i>XPCOM/XPConnect enables integration of native code.</i> 
>A fully-featured open source calendar library, libical ( http://w 
>, was harvested for the Calendar p 
>roject. Libical is an Open Source implementation of the IETF's iC 
>alendar Calendaring and Scheduling protocols. (<a class="external 
>" href="" title="http://tools.i 
>">RFC 2445</a>, 2446, and 2447). It parses iC 
>al components and provides a C API for manipulating the component 
> properties, parameters, and subcomponents. The library was initi 
>ally integrated by writing an XPCOM wrapper to adapt its interfac 
>e. To improve performance a greater proportion of application log 
>ic was migrated from JavaScript to the XPCOM component. 
90    </p>
91    <p>
92      <i>Separation of presentation from logic makes applications
> resilient to change.</i> The original UI implementation made ext 
>ensive use of graphics for rendering the month and week views. La 
>ter, as the developers learned more about XUL and the implementat 
>ion of the basic components matured, better ways were identified  
>to simplify the composition of the UI. This lead to increased scr 
>een drawing performance and reduced memory and disk footprint req 
>uirements of the application. The UI for the month and week views 
> was practically rewritten while the application logic remained v 
>irtually unchanged. 
93    </p>
94    <p>
95      <i>Porting XUL applications to other platforms is trivial.<
>/i> The Calendar originated as a Linux application with no consid 
>eration given to porting it to other platforms. But later, when t 
>he original developer (OEone Corporation) contributed the source  
>to the Mozilla project, the Calendar had to be migrated to the Wi 
>ndows and Macintosh platforms. The UI for the XUL application req 
>uired zero porting effort because it worked with almost no altera 
>tion on both new platforms. Similarly, since the UI code is writt 
>en in JavaScript, the interaction logic worked with no effort. Ho 
>wever, since the libical library is written in C, more significan 
>t effort was required to migrate this component to the other plat 
96    </p>
97    <p>
98      Fortunately an implementation of the libical library was al
>ready available for Macintosh so, with the cross platform nature  
>of XPCOM, a Macintosh calendar implementation was working within  
>a few days. However there was no existing Win32 port available, s 
>o developers had to undertake a porting effort to migrate libical 
> to Windows. Within a week this too was complete and Mozilla had  
>a working calendar for all three primary platforms: Linux, Macint 
>osh, and Windows. 
99    </p>
100    <p>
101      <i>XPInstall is easy for developers and for users.</i> The 
>Calendar is not a planned deliverable for the Mozilla 1.0 release 
>, and therefore is not included as a standard component in regula 
>r nightly and milestone release builds. Developers who are equipp 
>ed with the software and knowledge required to compile Mozilla ca 
>n set an optional environment variable and build the Calendar the 
>mselves. But many Mozilla users who want to try out the Calendar  
>can't afford this luxury. Using XPInstall it was easy for the dev 
>elopers to package a version of Calendar that could be installed  
>directly over the Internet by clicking a link. 
102    </p>
103    <h3 name="Conclusion">
104      Conclusion
105    </h3>
106    <p>
107      Mozilla, featuring XUL, delivers a compelling technology fo
>r developing cross platform applications with the same rich user  
>interface and end user experience as native desktop applications. 
> Designers who are experienced in building web applications using 
> W3C standard technologies can leverage this experience from the  
>browser directly to the desktop. 
108    </p>
109    <p>
110      Before the web became the standard for delivering applicati
>ons to users across disparate desktops, this problem was solved w 
>ith cross platform client-server tools. But these offerings were  
>invariably proprietary, cost a substantial amount of money per de 
>veloper, and had runtime license fees that kept you humble and ti 
>ghtly tethered to the vendor. Mozilla delivers much of the same v 
>alue as these cross platform tools, but with an open source licen 
111    </p>
112    <p>
113      As a rapidly maturing cross platform technology, XUL could 
>fill an interesting void for technologies such as Java J2EE and M 
>icrosoft .Net which focus on enabling network access to distribut 
>ed objects. Dynamic application logic can benefit significantly f 
>rom a UI presentation layer that is standards-based, scriptable,  
>extensible, and similarly distributable over the Internet. 
114    </p>
115    <p>
116      XUL blurs the distinction between desktop application and I
>nternet browser apps because it is firmly entrenched in both worl 
>ds. Some web applications will benefit from being migrated to XUL 
> because of the enhanced UI capabilities, consistent implementati 
>on of the specification across supported platforms, and access to 
> native resources such as shared libraries and the local file sys 
117    </p>
118    <p>
119      Whether you need to migrate an existing web application to 
>the desktop, are looking for a technology that will enable you to 
> easily port your applications to multiple platforms, or want to  
>integrate your own cool features into the browser, XUL warrants s 
>erious consideration. 
120    </p>
121    <h3 name="Reference_Material">
122      Reference Material
123    </h3>
124    <ol>
125      <li>XUL Planet - Samples, Tutorials and Language-References
> to XUL and XBL 
126      </li>
127      <li>Introduction to a XUL Document, Dan Matejka &lt;danm@ne
128      </li>
129      <li>XBL - Extensible Binding Language 1.0, David Hyatt &lt;
130      </li>
131      <li>XBL - XML Binding Language (W3C Note), David Hyatt &lt;
132      </li>
133      <li>XUL Overlays, Ian Oeschger &lt;
>; and David Hyatt &lt;; http://www.mozilla.o 
134      </li>
135      <li>XPCOM Part 1: An introduction to XPCOM, Rick Parrish &l
136      </li>
137      <li>XPConnect (Scriptable Components), John Bandhauer &lt;j
138      </li>
139      <li>Creating New Packages for Mozilla, Ian Oeschger &lt;oes
140      </li>
141      <li>Mozilla Calendar Project Page, maintained by Mike Potte
>r &lt;; 
142      </li>
143    </ol>
144    <div class="originaldocinfo">
145      <h3 name="Original_Document_Information">
146        Original Document Information
147      </h3>
148      <ul>
149        <li>Author: Peter Bojanic
150        </li>
151      </ul>

Back to History