Eclipse Ganymede:深入RAP

作为即将到来的计划于6月25日发布的Eclipse Ganymede的一部分,InfoQ的报道将会覆盖一系列Eclipse的子项目。今天,主角是RAP(Rich Ajax Platform),它正好发布了1.1版。InfoQ采访了Jochen Krause以更多地了解RAP以及它所提供的功能。

为了描述RAP给Eclipse带来的功能,Krause首先把Eclipse的用户分成了两类:一类是使用Eclipse IDE以及其工具来进行开发,一类是使用基于Eclipse平台的应用。krause表示,对于IDE及工具用户来说,开发工具将只会暴露RAP本身,而RAP的功能对于他们是透明的。与此不同的是,对于使用基于Eclipse平台应用的用户来说,他们现在将有能力运用基于OSGi的Eclipse插件开发模型,JFace以及Web版的SWT来构建支持AJAX的富Web应用。RAP的意图类似于Eclipse富客户端项目(RCP),主要的区别在于更精简的API以及为Web应用的多用户特性所做的增补。相对于RAP 1.0,1.1版扩展了API,引进了一系列诸如SWT的鼠标事件,JFace的图像装饰器以及工作台的增强等等新特性――同时它也包含了Eclipse 3.4的新功能,比如安全的增强和widgets的阿尔法着色。

当被问到RAP将如何与诸如Dojo,GWT,OpenLaszlo等AJAX框架相搭配,krause谈到:

RAP是一个专注于服务器端的AJAX框架并与OSGi,Equinox和Eclipse平台有着紧密的关系。要与其它的框架相比并不容易,因为他们的关注点有所不同。Dojo,GWT,OpenLazlo的widgets工具箱非常出色,但却不能提供一个广泛的应用平台。我们并不将其视为竞争对手,相反的是,他们或许将成为RAP后续版本客户端表现的附加选项。RAP现有的客户端表现是基于qooxdoo的,这同样是个强大的AJAX框架。RAP和GWT都支持开发者用Java编写,但其运行时模型却大不相同,GWT是整个在浏览器执行的,而RAP的执行被分成了服务器端和客户端两部分。

Krause同时提到了RAP能够将单一的代码源(codebase)编译成AJAX应用,或者编译成RCP应用,并表示这并不像看上去那么复杂。编译是针对于同样的工作台,JFace和SWT APIs来完成的,但当以Web应用来运行时,这些库的常规版本都被替换成了其支持Web的版本。在运行时,这些应用的代码都跑在服务器上,并有一个基于JavaScript的UI来向服务器传送事件和向客户端传送结果。然而,Krause也指出了RAP开发者必需引起注意的三件事:

  1. Web是一个多用户环境,所以在一个静态对象中(如singleton)保持应用状态是有可能引起问题的。
  2. 现有的RAP是RCP的一个子集――如果期望得到超出RAP支持的RCP附加功能,这里推荐的做法是通过插件来引入它们。
  3. 因为应用是在服务器上执行,开发者不应给每个用户分配大量的内存(这同样也是桌面应用的最佳实践)

作为下一代SWT的一部分,RAP计划提供完全基于AJAX的SWT实现。Krause指出并不是所有的平台都支持SWT API,并且SWT是为桌面应用而设计的。尽管大多数的SWT API都能被实现,但像在画布上描绘以及探测鼠标移动等功能还有待于浏览器在这些方面的进一步改善和提高。目前还欠缺的像拖拽和键监听器等API已计划在RAP的下一发布版本中,并将包含来自其它团队的技术,例如SWT的用于StyledText widget等复杂组件的Java/Flex 交叉编译。

关于RAP的远景规划,Krause表示将着力于两个主要的领域:扩展RAP API以实现更多的RCP API,以及利用Eclipse平台让用户从Web的视角获得更加自然的用户体验。Krause进一步阐释了第二点,RAP通过与可用性专家紧密协作,分析用户交互,以解决来自易用性的挑战。Krause同时看到了Web应用和桌面应用通过AJAX和RIA的融合将带来的好处,并提到研究表明在Web环境里通过基于Eclipse Draw2D API来提供图形编辑器是可行的。

当问到RAP将如何与E4集成并影响E4,Krause表示:

相关推荐