`
vwpolo
  • 浏览: 190894 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

RAP 与 RCP的区别

阅读更多

  RAP 可以让开发人员使用JAVA API和按照Eclipse 插件的开发模式构建基于AJAXWeb 2.0应用程序,是的,你没有看错,其实RAP的工作原理是采用交叉编译的方式将 Java 代码生成html、JavaScript和CSS文件,底层基于Qooxdoo AJAX框架,这样,我们就不必接触JavaScriptCSS和处理Http的细节了,可以让我们更关心程序的功能实现,想起来的觉得很幸福。

  RAPRCP 一样,运行在Equinox框架上,EquinoxOSGI R4规范的实现,是一个非常优秀和成熟的OSGi框架,Eclipse 是通过这个框架实现灵活的扩展性和插件的热部署。RAP也支持Eclipse的大部分扩展点,其实RAPRCP在架构上非常的类似,下图分别为RCPRAP的架构图:
 

   可以看出,这之间的整体架构差别不大,RCP是基于SWT的,RAP是基于RWT的,  RWT是实现了SWT功能的一个子集。其实这之间的使用方式都差不多。比如RWT也能和SWT一样使用MVC的方式来创建表格。

   RAP可以使用Servlet 编译,支持Servlet 2.32.42.5规范,并且可以通过打包成war文件部署在服务器上,客户端通过浏览器直接访问,不过这里的客户端和服务器的实现也不一样,。下面分别是服务器和客户端的实现。

   服务器端:

客户端:

 

 

  客户端的功能比较简单,是通过Qooxdoo程序从服务器上更新信息并绘制出相应的组件显示在浏览器中。基本上只是负责提交和更新显示数据的功能,服务器端的功能就比较复杂,比如要管理插件的生命周期,寻找新的插件并加载和管理系统的资源,还要处理多用户环境,在不同Sessions之间处理 OSGI bundles 的关系。

 

RWT VS SWT

  

 控件:

  RWT实现了SWT 中的大部分基本控件,使用方法大同小异,也提供了CTabFolderCBanner自定义控件,RWT中的TreeTable功能和SWT的的差不多,支持排序、过滤和直接编辑单元格,使用方式也一样的。可以直接从SWT代码复制到RWT程序中使用。

 

 

 布局

 

  RWP同样可以像SWT一样使用布局,布局的数据在服务器上计算处理,我们基本上不用担心跨浏览器出现布局混乱的问题了,目前RWP支持下面的布局:

 

  GridLayout, RowLayout FillLayout FormLayout StackLayout


 RWT中布局采用的计算算法和SWT一样。

 

 事件处理:

  目前RWT支持以下事件类型:

SelectionListener ControlListener ShellListener MenuListener ModifyListener VerifyListener


 

 RWT附加功能:

  RWT提供了附加的API可以方便管理web 环境,我们可以调用RWT.javagetLifeCycle静态方法获得程序的生命周期控制类,直接操作程序的生命周期可以通过getResourceManager静态方法获得资源管理的控制类,手工管理系统资源,通过getSessionStore方法管理session资源;通过getRequest 方法处理用户的请求getResponse处理服务器的响应。假如我们下面URL中得到请求的参数内容

http://localhost:8080/rap?startup=foo&var1=value1&var2=value2

可以调用

 

HttpServletRequest request = RWT.getRequest(); String var1 = request.getParameter( "var1" ); String var2 = request.getParameter( "var2" );

 

RAP.JFace vs RCP.JFace

 

 

 

 

  RAP的JFace实现了RCPJFace的所有视图查看器,比如TableViewer、TreeViewer等;
  支持大多数的视图概念,像:ContentProvider、LabelProvider、ColorProvider、ViewerFilter、DecoratingLabelProvider,
  支持文本装饰,比如文本框前面加个小灯泡提示
  支持所有JFace的标准对话框,也支持自定义对话框。
  支持向导页
  支持附加视图,比如 Outline,Properties视图
  编辑器支持:可使用多页编辑器,支持继承自ISaveablePart的视图
  支持透视图:可支持透视图切换器,透视图扩展点。
  支持Eclipse 3.3的菜单框架:包括Commands和Handler,支持采用表达式来控制菜单是否可见和是否可用
  支持Form表单样式 

 

 还有一个杀手级的特性: 支持在后台运行Job,可以通过UI界面执行长时间任务,支持Progress View 视图。

 

  如果你很喜欢RCP中JFace的Data Binding功能的话,在RAP中也可以实现,通过RAP的附加插件可以让你拥有RCP的数据绑定功能,并且可以运用到目前所有的RAP控件中,

 

  也许你看到这里的时候,上面的信息有些过时了,那有什么办法呢,Eclipse 组织的动作发展太快了,而且理念也非常的超前,应该听说过E4吧,Eclipse 的下一代开发工具,可以在Web 浏览器中打开Eclipse 进行开发了。持续关注Eclipse的发展,希望NetBeans不要落后的太远。


 

 

  • 大小: 19.1 KB
  • 大小: 25.7 KB
  • 大小: 26.7 KB
分享到:
评论
5 楼 1314520ln 2009-08-14  
谢谢LZ,现在正作ECLIPSE RCP的开发~~
4 楼 vwpolo 2009-08-12  
slaser 写道
理念和架构是非常优秀的,关键目前没有实际案例在。
我看了下example,运行效率还不是很好。不知道是不是qooxdoo的问题。

现在国外已经有商业产品了,可以参考:http://vwpolo.iteye.com/blog/404071
3 楼 slaser 2009-08-12  
理念和架构是非常优秀的,关键目前没有实际案例在。
我看了下example,运行效率还不是很好。不知道是不是qooxdoo的问题。
2 楼 flysheet 2009-08-08  
RAP早就听说了,只是无心也无时间了解,学习啦
1 楼 vwpolo 2009-05-20  
发现在JavaEye上发表文章挺考验人的耐心的,唉,真是无语

相关推荐

    RCP工程转成RAP,并在浏览器中运行

    将RCP工程转成RAP工程,在浏览器中运行。

    eclipse-rcp-2022-06-R-linux-gtk-x86_64.tar.gz

    Eclipse IDE for RCP and RAP Developers(eclipse-rcp-2022-06-R-linux-gtk-x86_64.tar.gz) 适用于Linux x86_64: A complete set of tools for developers who want to create Eclipse plug-ins, Rich Client ...

    Instant Eclipse 4 RCP Development How-to.pdf

    Instant Eclipse 4 RCP Development How-to 不错的一本书

    eclipse-rcp-2022-06-R-macosx-cocoa-aarch64.dmg

    Eclipse IDE for RCP and RAP Developers(eclipse-rcp-2022-06-R-macosx-cocoa-aarch64.dmg) 适用于macOS aarch64: A complete set of tools for developers who want to create Eclipse plug-ins, Rich Client ...

    eclipse-rcp-2022-06-R-macosx-cocoa-x86_64.dmg

    Eclipse IDE for RCP and RAP Developers(eclipse-rcp-2022-06-R-macosx-cocoa-x86_64.dmg) 适用于macOS x86_64: A complete set of tools for developers who want to create Eclipse plug-ins, Rich Client ...

    eclipse-rcp-2022-06-R-linux-gtk-aarch64.tar.gz

    Eclipse IDE for RCP and RAP Developers(eclipse-rcp-2022-06-R-linux-gtk-aarch64.tar.gz) 适用于Linux aarch64: A complete set of tools for developers who want to create Eclipse plug-ins, Rich Client ...

    eclipse-rcp-2022-06-R-win32-x86_64.zip

    Eclipse IDE for RCP and RAP Developers(eclipse-rcp-2022-06-R-win32-x86_64.zip) 适用于Windows x86_64: A complete set of tools for developers who want to create Eclipse plug-ins, Rich Client ...

    RAP Mail例子解释

    将RAP自带的Mail例子代码进行解析,前提是需要会一点插件和RCP的开发

    Eclipse RAP2.1部署到Tomcat总结

    本人只会用RCP开发个C/S的程序,最近看到RAP项目想试一下,在百度上看了很多文章关于如何部署RAP到Tomcat,有些文章已经过时的了,还是没能理解清楚,最后弄了2天时间,搞来搞去没办法调试出来,最后都想放弃了。...

    eclipse-rcp-2022-06-R-linux-gtk-x86_64.tar

    Eclipse IDE for RCP and RAP linux x86_64 适用于 RCP 和 RAP 开发的工具,需要JDK11及以上运行环境。

    eclipse-rcp-galileo-SR2-win32.zip

    Eclipse For RCP and RAP Developers开发包主要针对开发Eclipse插件,Eclipse RCP(富客户端应用程序),RAP(富客户端ajax应用程序)的程序员,还包含CVS、Mylyn和xml编辑器,EGit分布式版本控制等插件。...

    eclipse 2020-06 国际化资源包

    Eclipse IDE for RCP and RAP Developers (includes Incubating components) Version: 2020-06 (4.16.0) Build id: 20200615-1200

    Eclipse Rich Ajax Platform: Bringing Rich Client to the Web

    This firstPress title demonstrates the functionality and benefits of Eclipse RAP as well as shows the sweet spots of RAP, especially focusing on single sourcing RCP and web applications, which can be ...

    eclipse4book:Eclipse 4书

    Eclipse 4书 这是来自vogella GmbH和的Eclipse RCP培训课程的示例代码。运行应用程序克隆项目并将所有项目导入Eclipse IDE。 然后打开目标平台项目的target-platform.target文件,并将此目标定义设置为工作空间的...

    CodeMirror-Eclipse:CodeMirror-Eclipse

    CodeMirror Eclipse 使您能够在三个上下文中使用 codemirror:Eclipse SWT、RCP 和 RAP。 它在 SWT 浏览器中嵌入了 javascript codemirror 编辑器。 它提供了几个功能: 仅使用带有 SWT/RWT 的 codemirror。 这是...

    RAD快速应用开发环境EntireJ.zip

    EntireJ 是一个 RAD 快速应用开发环境,用于构建高度可伸缩的企业级应用,基于 RCP/RAP、JavaFX 平台以及 Android 和 iOS 移动平台。使用强大的声明式特性。 标签:EntireJ J2EE框架

    The Rich Ajax Platform

    RCP goes web2.0 --- The Rich Ajax Platform

    java在线安装包.rar

    可以直接安装 ...Eclipse IDE for Java Developers ...Eclipse IDE for RCP and RAP Developers Eclipse Modeling Tools Eclipse IDE for Scientific Computing Eclipse IDE for Scout Developers

Global site tag (gtag.js) - Google Analytics