我们最近开始开发 Java 桌面应用程序,管理层要求我们使用富客户端平台。我知道Java有四个:
- Eclipse RCP - www 链接到 ecipse rcp,
- Netbean RCP - Netbeans RCP 网站,
- Spring RCP -春天富客户端
- Valkyrie RCP - Valkyrie 富客户端
有没有人在这些方面有任何经验,如果有,每个方面的优势和劣势是什么?
谢谢
我们最近开始开发 Java 桌面应用程序,管理层要求我们使用富客户端平台。我知道Java有四个:
有没有人在这些方面有任何经验,如果有,每个方面的优势和劣势是什么?
谢谢
INTRO - 如果您只对结果感兴趣,请跳过;)
我正在为与 JSP 非常相似的自定义编程语言开发一个编辑器。首先,我使用NetBeans 平台将编辑器实现为我的论文。完成学业后,我找到了一份工作,他们希望我在Eclipse RCP中实现相同的东西,所以现在我至少可以比较这两个平台,至少在我在这个项目中遇到的问题上。
结果 -如果我可以在 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 中有很多这样的惊喜
回答太晚了,但有些人可能会点击此页面。
我会选择 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 builder,这是一大优势。Eclipse RCP,要么您必须手动编写代码,要么购买一些第三方 GUI 构建器。
5)Netbeans 平台有这个非常酷的 Lookup api 用于模块间通信。我猜 Eclipse 家伙为此目的使用扩展点。但是一旦你掌握了它,lookup api 就很容易了。
6)无论如何,这是一个重大的设计决定,关于选择哪个平台。Netbeans 平台适合我。它可能不适合你。这两个平台都需要努力,都提供了出色的“开箱即用”功能。两者都试驾再决定。
我建议您看一下 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++ 代码进行故障排除,以至于我对任何无法手动编码的框架都非常谨慎。
Spring RCP:Spring 的人有一个很好的可靠设计,但是文档真的非常薄弱。加快速度是相当困难的(但是一旦你做到了,你就可以很快地完成工作)。
Eclipse RCP:仅仅因为部署开销而没有使用 Eclipse(取决于您的目标受众 - 对我们来说,部署额外的 50 MB 运行时是行不通的)。毫无疑问,如果您的应用程序需要重要的插件功能(当然,您也可以使用 JSR 296 运行 Equinox,或者使用类似于 OSGi 推广的白板模式的设计模式),那么 Equinox 是一件好事。
我有 Eclipse RCP 的经验并会推荐它。
优点:
缺点:
如果您选择 Eclipse RCP,请务必获得这本书,这在刚开始使用该框架时非常宝贵:http: //www.amazon.com/Eclipse-Rich-Client-Platform-Applications/dp/0321334612
我目前正在开发一个 Spring RCP 应用程序。文档确实很薄弱,这是肯定的,但是博客和论坛有大量的信息可以开始。一旦你开始巡航,事情确实进展得相当快,如果你不熟悉框架,你真的只需要学习基本的 Spring。与 VLDocking 等 Spring 库的集成也非常出色。
如果您的用例是开发独立的 Java 桌面应用程序,我认为 Spring Rich 非常棒。我的意思是,如果您不需要分发模块和进行在线更新,那么它应该可以满足大多数需求。
从我的最终用户的角度来看。
我在 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
虽然我没有明确使用它们中的任何一个,但我已经使用了 Eclipse RCP 的一部分。具体来说,我使用了 Eclipse OSGi 运行时 (Equinox) 和一些常见的实用程序,我非常满意。OSGi 非常适合使用。我有几个朋友签订了使用 Eclipse RCP(比我使用的多)的大型合同,他们对此赞不绝口。
如果我的项目不包含大量遗留的 Swing,Eclipse RCP 将是我的首选。OSGi 真是太有趣了!(我想 Spring 也使用它,但尚未检查)
当然,这完全取决于您要提供的应用程序和服务的类型以及目标环境。但我也可以推荐 OSGi 作为开发和部署平台。底层架构和规范已经很好地开发和验证。
除了 Eclipse RCP,您还应该看看 Apache Felix ( http://felix.apache.org ) 和 Knopflerfish ( http://www.knopflerfish.org ),它们是(较小的)开源 OSGi 框架实现。
Netbeans RCP 非常好。多年来,它走了很长一段路。它使用许多人使用和理解的更强大的技术(“Swing”)。Eclipse RCP(更具体地说是 SWT)让我很困惑。
Eclipse RCP 提供插件机制,以便您可以在以后的部署中添加新功能。此外,通过更新机制,您可以在不受用户干预的情况下更改系统。在开发阶段,Eclipse RCP 提供了一个快速、健壮的基础,包括透视图、视图、编辑器、命令和操作机制。如果您的项目需要许多具有不同工具栏和菜单(以及自定义上下文菜单)的不同窗口,我建议您使用 Eclipse RCP。我只查看 Netbeans Platform 的视频并运行 Helloworld 项目,但它看起来很慢而且很笨拙 :) 启动 40 秒(您可以重新加载应用程序,但无需重新启动。)vogella.de 是一个很好的教程集合日食 RCP
还有基于反射的 UI 生成和定制。
您将自定义默认生成的 GUI,而不是自定义 IDE 以满足您的需求。尝试一种新方法可能会很有趣。