【问题标题】:Which Rich Client Platform to use使用哪个富客户端平台
【发布时间】:2010-10-09 09:51:04
【问题描述】:

我们最近开始开发 Java 桌面应用程序,管理层要求我们使用富客户端平台。我知道 Java 有四个:

  1. Eclipse RCP - www link to ecipse rcp,
  2. Netbean RCP - Netbeans RCP web site,
  3. 弹簧 RCP - spring rich client
  4. Valkyrie RCP - Valkyrie rich client

有没有人在这些方面有任何经验,如果有,各自的优势和劣势是什么?

谢谢

【问题讨论】:

  • Spring RCP 好像已经死了。
  • 这是一个非常迟到的答案,但是:我们目前正在开发一个五年前的 netbeans rcp 应用程序。我们能够将其完全迁移到 Maven。只需几个步骤,即可使用 IntelliJ IDEA 开发和调试应用程序,让您拥有成熟的 rcp 平台和出色的 IDE。

标签: java osgi rcp


【解决方案1】:

简介 - 如果您只对结果感兴趣,请跳过 ;)
我正在为一种与 JSP 非常相似的自定义编程语言开发一个编辑器。首先,我使用 NetBeans 平台 将编辑器实现为我的论文。完成学业后,我找到了一份工作,他们希望我在 Eclipse RCP 中实现相同的东西,所以现在我至少可以比较这两个平台,至少在我在这个项目中遇到的问题上。 p>

结果 - 如果我可以在 Netbeans 平台和 Eclipse RCP 之间进行选择,我肯定会选择 NetBeans 平台。为什么?
很棒的截屏视频,很好的教程,非常活跃的友好和乐于助人的社区,有很好的文档记录,源代码编写得很好,并且具有良好的代码约定。还有一些有趣的小工具(cookies、查找)。它很适合我。

为什么 Eclipse RCP 不适合我?
文档较弱,约定和 API 有时..ehm..对我来说太奇怪了 :-) 看到以下方法很常见:

/**
* Returns a description of the cursor position.
*
* @return a description of the cursor position
* @since 2.0
*/
protected String getCursorPosition() {
..
}

好吧,我认为他们一定是在开玩笑 :-D 我应该如何使用这种方法? 或者像这样:

/**
* Returns the range of the current selection in coordinates of this viewer's document.
*
* @return a <code>Point</code> with x as the offset and y as the length of the current selection
*/
Point getSelectedRange();

虽然属性的数量和类型很合适,但我没有找到 Point 对象存储范围的理想数据结构 ;-)

Eclipse RCP 中有很多这样的惊喜

【讨论】:

    【解决方案2】:

    回答为时已晚,但有些人可能会点击此页面。

    我会选择 Netbeans RCP, 1)Netbeans平台。它相当成熟并且已经发展成为一个用于开发应用程序的“易于使用”的平台。

    2)它很容易上手,而 Eclipse RCP 的学习曲线相当陡峭。直接去http://netbeans.org/kb/trails/platform.html,那里有教程、视频(一定要在看书之前观看前 10 个 api 的视频并尝试教程,这样你就可以提前掌握知识)。

    3) 有关 netbeans RCP 的书籍(我猜有 2 个有关 netbeans RCP 的书籍)是最新的(只有小改动,您不会有太多问题)。而关于 RCP 的主要书籍很长一段时间都没有(最近。也就是 2010 年 5 月,新版本已经发布,所以这对 eclipse RCP 开发人员来说是一件非常好的事情。当我尝试时它不存在学习它。我对不发布新版本的作者感到沮丧,几乎让新开发人员陷入困境。不是每个人都喜欢阅读文档。不发布更新的书籍几乎等于扼杀技术)。我很想看到一本适用于这两个平台的食谱类型的书。

    4)Netbeans 具有完全集成的 GUI 构建器,这是一大优势。 Eclipse RCP,要么您必须手动编写代码,要么购买一些第三方 GUI 构建器。

    5)Netbeans 平台有这个用于模块间通信的非常酷的 Lookup api。我猜 Eclipse 家伙为此目的使用扩展点。但是一旦掌握了lookup api就很容易了。

    6) 无论如何,关于选择哪个平台,这是一个重大的设计决定。 Netbeans 平台适合我。它可能不适合你。这两个平台都需要努力,都提供了出色的“开箱即用”功能。两者都试驾,然后再决定。

    【讨论】:

      【解决方案3】:

      我建议您看一下 JSR 296 - 它还没有完全完成,但我认为它提供了您在每个 Java GUI 应用程序中真正需要的某些核心功能,而不会强迫您生活在一个过于复杂的框架中。

      我已成功使用 JSR 296 创建了一个中型应用程序。对于这个应用程序中的窗口布局,我们使用MyDoggy(强烈推荐)。对于布局管理,我们使用 MiGLayout(强烈推荐)。对于数据绑定,我们使用 JSR 295 的修改形式(我们在用于 GUI 绑定的 JSR 295 之上实现了类似于 PresentationModel 的东西)。我正在将 Guice 作为 DI 机制合并,但还没有完成这项工作(到目前为止,我认为它会与 JSR 296 一起“玩得很好”,并在此处和那里进行调整)。让我们看看......持久性是这里缺失的重要环节 - 我目前正在评估 Simple 的 XML 持久性,但在让它与像 Guice 这样的 DI 容器一起工作时遇到了问题。我有 Betwixt 工作,但对 Betwixt 的依赖很大,所以我们正在寻找更精简的东西。

      对 Java 的其他 RCP 选项的意见:

      NetBeans: 我对 NetBeans 使用的方法有一些基本的哲学反对意见(太多的设计反模式不符合我的口味)。最后,该框架迫使您做出糟糕的设计决策——如果您不使用 NetBeans 作为您的 IDE(我尝试过,但我无法从 Eclipse 切换到 NB),它几乎是不可能使用的。可能只有我一个人,但似乎应该可以为 RCP 框架编写代码,而无需使用大型复杂的向导和大量自动生成的代码和 XML 文件。我花了很多时间对 Visual Studio 生成的旧 Visual C++ 代码进行故障排除,以至于我对任何无法手动编码的框架都非常谨慎。

      春季RCP: Spring 的人有一个很好的可靠设计,但文档真的非常薄弱。要跟上它的速度非常困难(但是一旦您做到了,您就可以很快完成工作)。

      Eclipse RCP: 仅仅因为部署开销而没有使用 Eclipse(取决于您的目标受众 - 对我们来说,部署额外的 50 MB 运行时是行不通的)。毫无疑问,如果您的应用需要重要的插件功能(当然,您也可以使用 JSR 296 运行 Equinox,或者使用类似于 OSGi 推广的白板模式的设计模式),那么 Equinox 是一件好事。

      【讨论】:

      • 是的,Netbeans RCP 的学习曲线非常陡峭。是的,出于某种原因,他们喜欢没有其他人使用的特殊设计模式。但是:自从上面的帖子以来,它有了很大的改进:大多数 xml 文件都被简单的注释所取代,向导在那里,但你不必再使用它们了。并出版了很棒的介绍性书籍(例如,leanpub.com/nbp4beginners)。
      • @KevinDay 有什么更新吗?似乎 MyDoggy 没有维护,JSR 296 已经死了。我们今天有什么选择?
      • @user3111525 男孩 - 这是 1000 万美元的问题......我仍然使用 JSR296 和 JSR295。如果我从头开始一个项目,我会认真研究 JavaFX。
      • MyDoggy 在 LGPL 下获得许可,.. 在 Java、Apache-2.0、世界中非常可悲:opensource.stackexchange.com/a/5756/7870
      【解决方案4】:

      我有使用 Eclipse RCP 的经验并且会推荐它。

      优点:

      • 组件 - 组件/插件模型允许重用。
      • 使用 SWT 和 JFace 来实现具有原生外观的 UI
      • 可插入的视图、编辑器和透视图使布局变得简单且可配置。
      • Eclipse 扩展点使扩展和与 3rd 方 API 和工具的集成变得容易。

      缺点:

      • 学习曲线

      如果您选择 Eclipse RCP,请务必获得这本书,在刚开始使用该框架时它是无价的:http://www.amazon.com/Eclipse-Rich-Client-Platform-Applications/dp/0321334612

      【讨论】:

        【解决方案5】:

        我目前正在开发一个 Spring RCP 应用程序。文档确实很薄弱,这是肯定的,但是博客和论坛有大量的信息可以开始。一旦你开始巡航,事情确实进展得相当快,如果你不熟悉框架,你真的只需要学习基本的 Spring。与 VLDocking 等 Spring 库的集成也非常出色。

        如果您的用例是开发独立的 Java 桌面应用程序,我认为 Spring Rich 非常棒。我的意思是,如果您不需要分发模块和进行在线更新,那么它应该可以满足大多数需求。

        【讨论】:

        • 我只是想提一下,富客户端开发人员最近将 RCP 代码移植到了一个名为“Valkyrie”的新项目中——引入了一些更新和增强功能。代码可以在这里找到 - gitorious.org/valkyrie-rcp - 这里有一个包含更多信息的线程 - forum.springsource.org/…... - 过去一周我一直在搞乱这个框架;到目前为止它看起来很棒,示例应用程序也非常好。
        【解决方案6】:

        虽然我没有明确使用它们中的任何一个,但我已经使用了 Eclipse RCP 的一部分。具体来说,我使用了 Eclipse OSGi 运行时 (Equinox) 和一些常见的实用程序,我非常满意。 OSGi 非常适合使用。我有几个朋友签订了使用 Eclipse RCP(比我使用的更多)的大型合同,他们对此赞不绝口。

        如果我的项目不包含大量遗留的 Swing,Eclipse RCP 将是我的首选。 OSGi 真是太有趣了! (我想 Spring 也使用它,但尚未检查)

        【讨论】:

          【解决方案7】:

          当然,这完全取决于您要提供的应用程序和服务的类型以及目标环境。但我也可以推荐 OSGi 作为开发和部署平台。底层架构和规范已经很好地开发和验证。

          除了 Eclipse RCP,您还应该看看 Apache Felix (http://felix.apache.org) 和 Knopflerfish (http://www.knopflerfish.org),它们是(较小的)开源 OSGi 框架实现。

          【讨论】:

            【解决方案8】:

            从我的最终用户的角度来看。

            我在 Eclipse 中看到的实现比在其他两个中更多。实际上,我知道 Netbeans 的实现,但我从来没有掌握过。

            从春天开始,这是我第一次听说它。

            虽然我的回答绝对是超 10,000 英尺的视图,但它以某种方式反映了行业对使用其中一种或另一种的偏好。

            此外,差异与平台可用的时间成正比。请记住 Eclipse 创建 SWT 是为了解决 Java Swing 在 1.3 中遇到的问题,其中它的速度简直令人望而却步。

            Netbeans 受益于 JVM 的改进,现在运行速度非常快。

            Spring 还很年轻(与其他两个相比),但一如既往,新事物向前者学习,使用起来可能更简单。

            这是一篇关于这两个平台的 Eclipse RCP 与 Netbeans RCP 的文章。可能会有所帮助

            http://blogs.oracle.com/geertjan/entry/eclipse_platform_vs_netbeans_platform

            【讨论】:

              【解决方案9】:

              Netbeans RCP 非常出色。多年来,它走了很长一段路。它使用许多人使用和理解的更强大的技术(“Swing”)。 Eclipse RCP(更具体地说是 SWT)让我很困惑。

              【讨论】:

                【解决方案10】:

                Eclipse RCP 提供插件机制,以便您可以在以后的部署中添加新功能。此外,通过更新机制,您可以在不受用户干预的情况下更改系统。在开发阶段,Eclipse RCP 提供了一个快速、健壮的基础,包括透视图、视图、编辑器、命令和操作机制。如果您的项目需要许多具有不同工具栏和菜单(以及自定义上下文菜单)的不同窗口,我建议您使用 Eclipse RCP。我只查看 Netbeans Platform 的视频并运行 Helloworld 项目,但它看起来很慢而且很笨拙 :) 启动 40 秒(您可以重新加载应用程序,但无需重新启动。)vogella.de 是一个很好的教程集合Eclipse RCP

                【讨论】:

                  【解决方案11】:

                  还有基于反射的 UI 生成和自定义。

                  您将自定义默认生成的 GUI,而不是自定义 IDE 以满足您的需求。尝试一种新方法可能会很有趣。

                  https://github.com/dotxyteam/ReflectionUI

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2010-10-03
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-11-27
                    • 2010-09-05
                    • 2016-05-29
                    • 1970-01-01
                    • 2011-02-13
                    相关资源
                    最近更新 更多