RichClient: XUL 系技术介绍 (XAML/JDNC/Flex/...)

推荐javaeye论坛上一贴,对 XUL 系技术非常不错的分析和讨论.

详见:
http://forum.javaeye.com/viewtopic.php?t=8655&postdays=0&postorder=asc&start=0

桶子们在热烈的讨论 UI 技术,这是好事啊。

俺来添加弹药,鉴于大家对 XUL 系列不是特别了解,我就谈谈这些技术的运作方式。

观点:目前的 MozillaXUL/Thinlet/SwiXML/JDNC/XAML/Flex/Laszlo... 在我看来,都是一个套路。

先别急,且听俺慢慢说来。

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程序)。


大胆预测一下:

这些技术中,最具竞争力的是 Longhorn/XAML ,它具备平台底层的支持(OS内置),可以想象性能和能力都要比其他要出色。但,这也是弱点,如果没有一个合理可靠的安全机制做保证,它也有可能因为安全问题而败北。

Thinlet/SwiXML已是成熟技术,它们将在各自领域继续发挥作用,但,Sun 目前正在立推 JDNC ,预计这两个产品将不会有更大的作为。而 Sun 的 JDNC 是很有野心的计划,在非 Windows 平台它将可能是唯一的通用标准(如果MozillaXUL的推广仍无起色)。但在 XAML 蓄势待发的情形下,它有可能和目前的 Applet/Swing 一样,处于劣势。

Flex/Laszlo在浏览器领域肯定会占据一席之地,因为它们目前已经比较成熟。而,彼此的竞争会带来更大的利益。Laszlo 现在已经是 OpenSource 的了,走 CPL 协议。Flex 也被迫推出了非商业客户的免费计划。如果 Flex/Laszlo 在 XAML 推出之前能有 Killer 级的应用,可能会形成事实上的 RCP 标准从而取得优势也未可知。


那么,下一个界面技术对我们的开发有什么影响呢?或者,那时的应用会是怎样的?

以 XAML 为例,应用的客户端可能就是一个 XAML 的文件。这个文件可以象现在 JavaWebStart 的 JNLP 一样,从网上下载,本地缓存。运行时,XAML 被运行环境打开,如果需要,Client 从远端的 WebService 上获取功能支持。这意味着基于 XAML 的 Web 应用可以完全脱离浏览器,但仍具备 Web 技术的优势。不依赖于浏览器的界面将有更丰富的表示形式。而 JDNC 如果和 JavaWebStart 结合,则意味着 Java 标准的 RCP 平台(不过几乎可以肯定性能会不如 M$),对于非 Windows 平台意义重大。

可以看到,关键业务逻辑被集中于服务器。依据 SUN 和 M$ 的和解协议,以 webservice/xml 方式提供的服务将具备互操作性(不排除 M$ 违反协议推独立标准的可能)。也就是说,只要遵循 WebService 的标准,任何一种 Client UI 技术都将被支持。对我们而言,这意味着 UI 层和 Business 层的进一步分离。也就是更多的服务器端开发(WithOut HTML)。

你可能感兴趣的:(windows,webservice,浏览器,OpenSource,actionscript,mozilla)