论坛首页 AJAX版 UI

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

浏览 21071 次
该帖已经被评为精华帖
作者 正文
时间:2004-11-05
桶子们在热烈的讨论 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)。
   
时间:2004-11-05
refrence

Mozilla XUL: http://www.mozilla.org/projects/xul/
Thinlet: http://www.thinlet.com/
SwiXml: http://www.swixml.org/
JDNC: https://jdnc.dev.java.net/
XAML: http://www.xaml.net/
Flex: http://www.macromedia.com/software/flex/
Laszlo: http://www.openlaszlo.org/
   
0 请登录后投票
时间:2004-11-05
XUL 确实不错,两年多以前我所在的一家公司给某个知名家电企业做的一个进销存项目表示层就是用 XUL 做的。
附件是 O'Reilly 一本介绍 Mozilla 开发的书中介绍 XUL 的一章,感兴趣的可能看看。

把表示层放到客户端来做,反而强化了服务器端提供业务服务的能力(其实就是类似于 WebService 的架构),这个趋势现在已经比较明显了。
  • xul.rar (874.2 KB)
  • 描述:
  • 下载次数: 1647
   
0 请登录后投票
时间:2004-11-05
to: dlee
该应用是否可通过web访问?见识见识。

的确,XUL+JavaScript很强,甚至能直接连后端的 Socket,可惜一直没有见到很好的应用。

现在出的若干技术都有强烈的 XUL 印记。想一想,其实本质都一样,变化的是运行环境而已。 (XRE)
   
0 请登录后投票
时间:2004-11-05
jackyz 写道
该应用是否可通过web访问?见识见识。

他们是给企业内部做的,项目没做完我就跑掉了。当时用 XUL 是因为他们的 CTO 是一个 Linux 的坚定支持者,所有开发环境都在 Linux 上做,没有办法使用 IE。

Mozilla/FireFox 不光是一个纯粹的产品,更是一个可重用组件的宝库。很多 XML 技术都是由他们催生的,例如 RDF 催生了 RSS,XUL 催生了现在的 XAML。这样一个团队是一个技术狂热分子最理想的环境。
   
0 请登录后投票
时间:2004-11-06
对 XUL 我不了解。 到这里说几句外行话。

用 XML来描述界面, 让我想起古老的 windows 的资源文件。
这两者的差别, 无非是由一种私有的语言, 变成了一种公开的,标准的语言。

这肯定会带来好处。 我觉得比较两种方式的差别对于我们 把握 XUL 有好处。谁有兴趣来介绍一下。 我不太懂。

另外, 比较 XAML 和资源文件的差别和相似性, 也应该有好处。
   
0 请登录后投票
时间:2004-11-07
如果把XUL或者XAML和Eclipse的RCP结合起来,加上java web start的方式发布是不错的选择
Deploy an SWT application using Java Web Start

XUL的例子
Thinlet 用Java实现了XUL,满不错的
   
0 请登录后投票
时间:2004-11-08
这里的XUL并不单指Mozilla的XUL项目,而是指“使用XML描述界面”的一系列技术。XAML/Flex/Laszlo/Thinlet/SwiXML/JDNC/MozillaXUL这些技术都采用了“使用XML描述界面”的方法,所以将其归为一类。

armlinux-w 写道
对 XUL 我不了解。 到这里说几句外行话。
用 XML来描述界面, 让我想起古老的 windows 的资源文件。
这两者的差别, 无非是由一种私有的语言, 变成了一种公开的,标准的语言。
这肯定会带来好处。 我觉得比较两种方式的差别对于我们 把握 XUL 有好处。谁有兴趣来介绍一下。 我不太懂。
另外, 比较 XAML 和资源文件的差别和相似性, 也应该有好处。


资源文件更类似于压缩文件,常用于将图标、图片、密钥什么的打包进程序,似乎没有对于界面布局的描述。XUL则侧重界面元素的布局表述,比如:窗口中有几个按钮,几个选择框,等等。更象一个HTML文件,或者Delphi的.FRM文件,它通常是引用资源但不包含资源本身。

结合Script技术的XUL应用,更类似于目前加入了JavaScript的HTML。由脚本来处理界面事件,结合服务器上的WebService,完成复杂功能。此时,在运行环境的支持之下,一个单独的纯文本文件,就可以是应用的整个客户端。

andiyang 写道
如果把XUL或者XAML和Eclipse的RCP结合起来,加上java web start的方式发布是不错的选择
Deploy an SWT application using Java Web Start


点子不错,但目前似乎没有面向 SWT 或者 EclipseRCP 的 XUL 项目。EclipseRCP 致力于提供方便的可插入的应用程序平台,对于界面开发方式,似乎关注得不多。

andiyang 写道

XUL的例子 Thinlet 用Java实现了XUL,满不错的


Thinlet 是一个很有意思的项目,基于 Thinlet 的程序不仅可以作为独立Application程序运行,也可以作为Applet程序运行(兼容MS的老JVM),甚至还可以运行在 J2ME 环境。

JNDC是SUN的XUL项目,这个项目值得关注。如果成熟之后,SUN将它作为新的JRE的一部分Release,那么就将成为Java平台XUL的事实标准。结合JWS,能成为XAML的有力竞争者。

XUL这个点子的妙处在于,XUL文件仅仅描述界面的组成,它不包含组件本身或者具体的实现技术,理论上可以运行于任何运行环境。你可以用浏览器中的SWF引擎来画界面(Flex/Laszlo),可以用Window的界面引擎来画界面(XAML),可以用AWT/SWING组件来画界面(Thinlet/SwiXML/JNDC),还可以用任何其他的技术来做这件事。此外,还可以选择不同的组件库,换一套组件,即可换一套风格。
   
0 请登录后投票
时间:2005-02-24
http://xul.sourceforge.net/

这个 http://cookxml.sourceforge.net/cookswing

好像是个Chinese 小伙子写的,他的几个 Javascript 库好象被 http://incubator.apache.org/myfaces/ 采用了

大家支持一下吧
   
0 请登录后投票
时间:2005-06-25
jackyz 写道
点子不错,但目前似乎没有面向 SWT 或者 EclipseRCP 的 XUL 项目。EclipseRCP 致力于提供方便的可插入的应用程序平台,对于界面开发方式,似乎关注得不多。


我正在写SWT的XUL,刚做好演示,文件比较大,上传不了,你可以在这里下载。有什么意见或者建议尽管提。^_^

我的blog地址是:http://yipsilon.rcp.cn
  • D11492f0-72fa-40b7-b7e9-ae788ef11feb-thumb
  • 描述: Demo演示截图
  • 大小: 35.2 KB
   
0 请登录后投票
论坛首页 AJAX版 UI

跳转论坛:
JavaEye推荐