SWT / JFace还是Eclipse RCP?

选择Eclipse Rich Client Platform作为我的应用程序的基础的原因是什么,而不仅仅是使用SWT / JFace?

Eclipse RCP不仅仅是一个GUI(SWT / JFace),而是一个基于OSGi的平台。

因此,您可以选择RCP框架以便:

  • 对不同的模块有更好的定义
  • 管理他们的生命周期和版本兼容性
  • 隔离类加载器问题 。

如果您的应用程序只是一个单片GUI字体端,RCP可能有点矫枉过正。

除了VonC指出的要点(OSGi平台好处:模块化,类加载器隔离,可扩展体系结构)之外,Eclipse RCP还提供了许多应用程序级服务,可以简化最终产品的整体开发:

使用Eclipse RCP,您将获得:

  • 准备好和可扩展的UI应用程序框架
    • 分离离散应用领域的观点
    • 视图编辑器,用于提供可重用的UI块以及它们自己的生命周期
    • 使用键绑定,上下文处理程序以及对工具栏和菜单的绑定进行命令抽象
  • 整个日食生态系统的所有好东西
    • p2配置用于管理应用程序的安装和自动更新
    • ECF沟通框架
    • BIRT报告工具
    • EMF和建模工具
    • 更多……

当然 – 后一部分并不一定意味着您必须使用Eclipse RCP平台的庞然大物来获得这些优势。

根据应用程序的范围,您可能只需将Equinox用作底层OSGi容器,并在此基础上构建自己的GUI客户端。

还要记住,当在SWT / JFace土地上做出GUI框架决策时,Eclipse RCP不再是城里唯一的游戏。 有一些严肃的竞争者可能会更好地满足您的需求:

  • Riena Platform Project引用自己的话说“构建多层企业客户端/服务器应用程序的基础”
  • E4项目项目正在进行中,旨在构建下一代eclipse RCP平台,并考虑更多模块化设计。

编辑:自从我的原始答案发布以来,Eclipse e4项目已经从一项正在进行中的工作gradle,现在已成为一个完全可用的富客户端应用程序框架/平台。 它已经成熟到现在被用作最新Eclipse 4.2(Indigo)IDE的底层平台。

只有我的2便士价值,但香草SWT / JFace可以减少学习曲线。 我喜欢它们只是简单的GUI,你不需要学习“平台”(如RCP方式),只需掌握SWT组件并构建你的GUI! 总的来说,我认为它更简单(但我对RCP并不是很了解!)。

Eclipse 4dependency injection机制是一个很好的资产,选择Eclipse RCP,而现在用E4,平台可以非常轻量级,

使用模型编辑器添加到此e4工具,可以节省大量时间