论坛首页 Web前端技术论坛

XWT 是一个我们需要重点关注的项目

浏览 33852 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-12-12  
XWT 是什么?一个与 XAML、XUL 类似的以 XML 来描述 GUI 布局的技术和 GUI 控件库。
XWT 有什么优势?XWT 是完全跨平台的(IE、Mozilla、Opera;Windows、Linux、Solaris),不会像 XAML 或者 XUL 那样将你绑死在某个平台上,而且它很小,性能也很好。

XWT 有两个版本,在 IE 里面是作为一个 ActiveX 控件来运行的,而在所有支持 Java 的浏览器里面(IE、Mozilla、Opera)都可以作为一个 Applet 来运行。因为 IE 自带的 JVM 并不支持 Swing,所以 XWT 没有使用 Swing。XWT 通过 XML-RPC 或者 SOAP 与服务器通信,获得需要显示的数据,因此你可以使用任何支持 XML-RPC 或者 SOAP 的技术做服务器端的开发。XWT 运行在一个严格的沙箱里面,不需要担心其会执行非法的操作。
XWT 是两年多前建立的开源项目了,但是今天看来仍然是非常 cool 的。它的 ActiveX 版本是用 Java 写的,而且是用 gcj 编译为本地代码,并且可以通过 COM 接口来访问。XWT 的布局设计借鉴了很多 TeX 的设计思路。

XWT 中采用了 JavaScript 作为其脚本语言。为什么要采用 JS 这里有详细的解释:
http://kw.pm.org/talks/0103-xwt-kwpm.pdf
Andrew Kohlsmith 写道
Yes, I mentioned JavaScript – the bane of the Internet. I just about wrote off XWT when I realized that XWT is centered around JavaScript, and that I'd have to learn JavaScript. Having worked with it for just about a year now, I have to say that selecting JavaScript was an excellent move on Adam's part. It's not a tacked-on afterthought like how JavaScript is under (D)HTML – it's a core part of XWT and is complex enough to handle practically anything a widget will need to do. It's simple and straightforward enough that you can take practically anybody who's done web development and give them some basic training on XWT and they'll find their way.

在这篇文档里面作者还对 XWT、XUL、DOM、Flash、Swing、CURL 等等技术进行了有说服力的比较。

XWT 相关的站点和资源:
http://www.xwt.org
http://sourceforge.net/projects/xwt/
http://www.xwt.org/faq.html
http://kw.pm.org/talks/0103-xwt-kwpm.pdf
http://xwt.sourceforge.net/sundevday/SunDevDay.pdf

XWT 的总设计师是 Adam Megacz
http://www.megacz.com
这可是个牛人啊,看看他的简历:
http://www.megacz.com/resume/resume.html
他还是 gcc 和 gcj 编译器的开发人员之一。现在正在攻读他的 Ph.D 的学位。

还有他的名人名言:
Adam Megacz 写道
5.5 Yeah, but don't you have some pent-up highly political rant about Open Source, Microsoft, and how geeks are going to take over the world?

If I haven't made it clear already, I don't get into the napoleonic aspects of open source. I use GNU/Linux/Apache/GCJ/Rhino because for my specific needs, they are undoubtedly the best tools available -- not because I think that commercial software is somehow impure or wrong.

That said, I've always seen Microsoft, Startups, and Open Source as three snakes, each eating the next's tail. The Silicon Valley startups, driven by enlightened greed, come up with crazy, inventive new technologies. A few years later, Microsoft either buys out the startup or bundles a copy of its technology into the Windows Monopoly and puts the startup out of business. A few years after that, somebody completes an open source program with a crappy UI and a better implementation of all the features that Microsoft just finished bundling into the OS. And a few years after that, a new startup running out of a garage, strapped for cash, discovers that they can modify this cool open source program to do something new and interesting, or build on top of it, and they create a successful business. And then the cycle repeats itself.

Like I said, quit whining and go write code. This is the way of the world; just keep the snakes moving and everybody gets cool new stuff. Got it?

Microsoft, Startups, Open Source,三只咬尾巴的蛇。
   发表时间:2004-12-12  
XWT 的设计灵感主要来自于 XUL。请看其 FAQ 中的内容:
Adam 写道
1.3 What technologies inspired XWT?

Mozilla's XUL/XPFE
XWT was directly inspired by Mozilla's XUL technology, which lets you mark up a user interface using XML. I like to think of XWT as "XUL light with SOAP and XMLRPC", since it is much simpler and more lightweight than XUL, although it is less powerful than XUL since it lacks the ability to render arbitrary XML documents. A brief way of summarizing the differences would be that Mozilla/XUL sees GUIs as nothing more than a particular kind of document; XWT sees documents as nothing more than a particular kind of GUI. Conventional GUI frameworks see both as nothing more than a grid of pixels.

Macromedia Flash
While working for Reactivity, I did a contract for the now-defunct contact.com. We wrote a full-blown contact manager / address book entirely in Flash, which talked to a J2EE/Apache/Oracle server using HTTP POST (SOAP/XML-RPC were not yet mature). After leaving Reactivity, I spent a lot of time thinking about that project -- Flash was the best tool available for the job at the time, but yet was clearly far from ideal. I really wish that we had had XWT back then.

TeX
Donald Knuth's TeX was the first serious software typesetting solution, and its rendering model (hboxes and vboxes) shows unimaginable forethought. XWT's rendering model is directly based on TeX's.

UNIX
The UNIX model of "many small composable tools" was a major design influence; you could say that XWT's template data abstraction requirements are an attempt to impose the UNIX worldview the GUI design process.

Others
XWT's extensibility framework is patterned after Emacs'. The PalmOS mentality of "small and simple are good" was another strong influence.

与 XWT 类似的开源技术还有很多,网上有很多这类技术的投票:
http://xul.sourceforge.net/post/2003/12/poll_what_is_your_xul_motor_of_the_year_2003.html
http://viva.sourceforge.net/republic/2004/02/poll_what_java_xul_toolkit_do_you_use_most.html
http://viva.sourceforge.net/republic/2004/07/poll_what_java_xml_ui_toolkit_do_you_use_most.html

从这些投票中我们可以看到,技术发展到了今天,让我们彻底摆脱 HTML 的技术已经有很多了。XAML、XUL、Flash 只是其中得到巨大商业支持的三种,但是是否是最好的技术(我们这里最好还是从纯技术角度来把这些问题探讨清楚),则是个仁者见仁,智者见智的问题了。可以肯定的是:Web 表示层开发的最终出路是彻底抛弃那种笨拙的基于 HTML FORM 的请求/响应模式,以 XML 技术和 WebService 的体系架构为核心加以彻底改造。表示层的逻辑全部前推到浏览器端来运行。B/S 之间在不切换页面的时候,传输的全部是 XML 格式的纯数据。如果将来所有的 Web 表示层开发全部都基于 XML 技术改造后,建造一个智能程度更高的搜索引擎将不再是一件非常困难的事情。而这一技术发展方向正是几年前 W3C 的领头人 Tim Berners-Lee 所设想的 Semantic Web 蓝图中描述的情形。
http://www.scientificamerican.com/2001/0501issue/0501berners-lee.html
http://www.xml.com/pub/a/2001/03/21/timbl.html
http://www.xml.com/pub/a/2001/03/07/buildingsw.html
0 请登录后投票
   发表时间:2004-12-12  
这个项目自May 13, 2003来没有发布过新版本,使用它风险比较大
0 请登录后投票
   发表时间:2004-12-12  
jjx 写道
这个项目自May 13, 2003来没有发布过新版本,使用它风险比较大

我在这里主要是希望作为一个案例,从纯技术角度讨论一下这个项目中的一些设计,以便提升大家的设计能力,不是为了要推销什么东西。这个项目是开源的,其实是把所有的 power 都交到了使用者手中,能否将其用好,还是要看使用者的功力。感兴趣的朋友可以参与讨论,完全不感兴趣的不参与就可以了。
0 请登录后投票
   发表时间:2004-12-12  
dlee的贴子看了以后总是有种很长见识的感觉。这是我第一次听说XWT, 但我感觉纷繁复杂的VIEW层开发技术中一个杀手级的VIEW层方案似乎已开始浮出水面了。
0 请登录后投票
   发表时间:2004-12-12  
http://www.laszlosystems.com/

虽然是开源,但应用是否需要费用我还不清楚。
我下载了Lzx 3.0 alpha 2,支持Unicode.

因该区分Macromedia Flash与LZX.
重用方面, LZX TAG是支持OO的, 你可以扩展一个自己的button,拥有属性,事件,这一切只要。

<canvas width="200">
  <simplelayout spacing="5"/>
  
  <class name="box" height="100" width="100" bgcolor="red"/>
  
  <box/>
  <box/>
  <box/>
</canvas>


其的component非常丰富,包括Tree!
想象一下OO的标记语言?! :)

LZX的开发方式是用LZX做成模板,然后模板中的变量通过XML与后台传递数据。
LZX可以将swf嵌入在Html里。

至于LZX Server 在Linux下的表现,我不了解。
0 请登录后投票
   发表时间:2004-12-12  
这个东西有一个优点就是比较小,我就是特别喜欢小而精的东西。Laszlo 我下载过,有 100 多 M,感觉太大了。XAML 只能用在 M$ 的平台上,XUL 只能使用 Mozilla 内核。Flash 我不大清楚,XWT 开发人员 Andrew 对于 Flash 有这样的评价:
Andrew 写道
Macromedia Flash – The authoring tools need to be purchased. Creating reusable modular widgets is not easy to do in Flash. The widgets are not themeable, and the engine is only partially available and peripherally maintained under Linux. All in all, it's a proprietary system for creating dynamic graphics and presentations, not a robust structure for application development.

其实和我的想法差不多。太复杂、限定于某一个平台、必须花钱购买开发工具和受限于私有的技术,这些至少在我看来或多或少都是问题(完全是个人喜好,可能其他人并不这样认为)。而 XWT 并不存在这些问题,在我看来还是很理想的。最重要的是,它现在就在手边,而且并不复杂,只要你有欲望,随时都可以把它用起来。

我介绍 XWT 就是想说明:如果我们抛开商业因素,从纯技术的角度就事论事,其实在开源的世界里,小公司或者个人提供的解决方案也有很多是 viable 的,而且很可能在技术上是更加有趣的。其实这个 XWT 的设计是有非常多的独到之处的。所以我们除了讨论大厂的解决方案如 XAML、XUL、Flash 外,也不要忽略开源的天空中亮度虽然不高,但是依然闪烁着的这些很有特色的小星星。有些时候拿高倍望远镜看看它们也是蛮有趣的。
0 请登录后投票
   发表时间:2004-12-12  
javaeye相关贴 写道

RichClient: XUL 系技术介绍 (XAML/JDNC/Flex/...)
http://forum.iteye.com/viewtopic.php?t=8655

谈谈Javascript
http://forum.iteye.com/viewtopic.php?t=8630

未来的客户端表现层技术展望
http://forum.iteye.com/viewtopic.php?t=8642


dlee 写道

可以肯定的是:Web 表示层开发的最终出路是彻底抛弃那种笨拙的基于 HTML FORM 的请求/响应模式,以 XML 技术和 WebService 的体系架构为核心加以彻底改造。表示层的逻辑全部前推到浏览器端来运行。


一个比较典型的关于html的反面例子:
在基于纯html的Portal应用程序中,用户只希望更新一块,却不得不重新获取整个portal页面,服务器不得不维护每个portlet的页面缓存。

HTML设计的最初目的,主要是输出,在处理输入、用户交互方面能力不足。
理想用法是,用户给出一个简单的url,服务器给出一段文本。
对于交互需求越来越复杂的应用程序,Web Service 客户端是大势所趋。
这不仅是HTML应用程序的末日,而且是B/S结构应用程序的末日。
HTML也许能够作为一种出版发布的格式而存在(像pdf, Tex等)。

XUL, (XAML?), XMLHTTP, XWT, Flex 从本质上来说,都不是B/S结构,是用HTTP通信的C/S结构,而且是客户端 C/S结构。都需要在浏览器中植入额外的插件(或系统COM对象)来支持。

这里面有个问题,浏览器还有必要存在吗?
也许XWT, Flex等需要浏览器来跨平台。但跑在浏览器里面的C/S 客户端,注定了只能作为客户端;比B/S客户端强的地方,就是交互性更好。

我想,XAML胜出的可能性最大。因为XAML最彻底,XAML就是桌面程序,而不是浏览器程序。XAML能够作为客户端,拥有更大的权限,能够从服务器下载大量的数据,保存在本地,进行复杂的即时处理。
比如在线智能提示这种需要查询大批相关数据的功能,对于胖客户端来说,实现比较直观容易;对于瘦客户端来说,非常蹩脚痛苦不说,很多高级功能也无法实现。

我的看法是,既然走上了抛弃HTML, 抛弃B/S的不归路,那么不如走得更彻底一些。谁走得更彻底,谁就是赢家。
客户端为什么一定要跑在浏览器里面,为什么浏览器不能嵌在客户端里面?
我理想中的未来的Web Service客户端程序是这样的:
1. 用户交互界面是 XML Wiget写成,提供了丰富的桌面控件和用户体验。出版布局功能也很强。能够展示类似于Portal的功能集成操作界面。
2. 客户端的发布通过Web Service等自动完成。每次打开客户端应用程序的时候,客户端应用程序去连接服务器,检查并申请最新版本。就像从Web Server上获取页面一样,本地的客户端版本,就像web浏览器的本地html缓存文件一样。
3. 客户端能够通过Web Service和Server通信,进行数据更新,甚至届面更新。客户端也有权利在本地申请一些内存和硬盘空间,存放从服务器端预取的一批数据。
4. 客户端内置浏览器。浏览器只是客户端程序整个布局中的一个小的portlet,一个功能模块。这个浏览器用来获取html等格式的报表、结果等纯粹的输出信息。
一个客户端当然可以包含多个浏览器。
0 请登录后投票
   发表时间:2004-12-12  
to buaawhl:
我基本上同意你的这些看法。XWT 本身是一个纯 Java 程序,ActiveX 或者 Applet 只是其包装而已。它完全使用 gcj 来编译,可以运行在 JVM 环境下或者作为一个 native 的可执行程序来运行,所以 XWT 是完全可以不依赖于浏览器的。

我已经使用 gcj 成功编译了 XWT,得到了 xwt.exe,感兴趣的朋友可以和我联系。
0 请登录后投票
   发表时间:2004-12-12  
XWT……又是一个新鲜的名词。如果是用XUL,用XML-RPC通信,那不就是我们想要的东西么。
新东西怎么这么多,而且都是事实上不新的东西。苦恼的同时又非常兴奋:)
看了看介绍,还不知道怎么去开发XWT。是不是可以应用在所有地方

今天实践了Flex的RemoteObject,通信成了一间非常简单的事情(比Hessian),而且调试也非常简单,没有中文问题。
刚想发片贴子来交流flex经验呢,又有新货了……
Flex要想脱离浏览器,其实也不是不可以的,而且肯定会做到的,我相信。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics