XUL 的核心思想是“用XML来表达界面”,是 Mozilla 的创新, Mozilla 浏览器本身就是一个经典的 XUL 应用。有兴趣的可以研究 Mozilla\Chrome\Browser.jar 中的东西。这的确是个伟大的发明,以至于,现在其他公司纷纷效仿,出现了N个衍生技术。
Mozilla 的内部,有一个 XRE ,即 XUL Runtime Environment,这个 XRE 解析运行所有的 XUL 应用,包括:Browser本身和各种工具,如 LiveHttpHeader, XUL Console 等等。一个 XUL 文件被 Parser 解析,将其中引用的 Widgets 组装,通过 Render 显示给用户,当发生事件时,通过 ScriptEngine 执行相应事件的脚本代码。可惜的是, Mozilla 的这个宝贝似乎“养在深闺人未识”,罕见有哪个项目使用的。但它的思想,衍生出了N多的技术。
Thinlet/SwiXML/JDNC: Java 的 XRE。以 Applet/Swing 来 Render 界面,发生事件时,调用用户自己的事件处理程序(java 程序)。
XAML: Longhorn 内置 Native 的 XRE。以 Windows 的界面组件来 Render 界面,发生事件时,调用用户自己的事件处理程序(.NET 的程序)。
Flex/Laszlo: 基于 Swf 的 XRE。先由 Java 的 Interpreter 将 MXML/LZX 源文件生成为 Swf 文件,该 Swf 可能包含界面构造信息(XUL?)、事件脚本(转换为ActionScript)和经过裁减的WidgetsLib(XUL中用到的widgets)。用 Flash 的界面组件来 Render 界面,发生事件时,调用用户的事件处理程序(用户的代码转换成的ActionScript程序)。
转载于:https://www.cnblogs.com/xiaoqiao/archive/2005/05/19/158677.html