我们最近开始开发Java桌面应用程序,管理层要求我们使用Rich Client Platform。我知道Java有四个:
有没有人有任何这方面的经验,如果有的话,每个人的力量和弱点是什么?
感谢
答案 0 :(得分:10)
INTRO - 如果你只是在结果中,则跳过;)
我正在开发一个与JSP非常类似的自定义编程语言的编辑器。首先,我使用 NetBeans平台将编辑器实现为我的论文。完成学业后,我找到了一份工作,他们希望我在 Eclipse RCP 中实现相同的功能,所以现在我可以比较这两个平台,至少我在这个项目中面临的问题。
结果 - 如果我在Netbeans平台和Eclipse RCP之间做出选择,我肯定会选择一个NetBeans平台。为什么呢?
伟大的截屏视频,良好的教程,非常活跃的友好和乐于助人的社区,相当完整的文档和源代码编写得很好,并具有良好的代码约定。还有一些有趣的小工具(cookies,查找)。它只是适合我。
为什么Eclipse RCP不适合我? 文档较弱,约定和API有时候......对我来说很奇怪:-)我们很容易看到像这样的方法:
/**
* 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中有许多人如此惊讶
答案 1 :(得分:7)
回答太迟了,但有些人可能会点击此页面。
我会选择Netbeans RCP, 1)Netbeans平台。它非常成熟并且已经发展成为一个“易于使用”的平台,用于开发应用程序。
2)它非常容易上手,而日食RCP的学习曲线非常陡峭。只需转到http://netbeans.org/kb/trails/platform.html,你会看到教程,视频(看看前10个api的视频,再看看你读书之前的教程,这样你就会事先得到一些东西)。
3)关于netbeans RCP的书(我猜netbeans RCP上有2个)是uptodate(只有你不会有太多问题的小改动)。而关于RCP的主要书籍很长时间没有提供(最近。也就是说,2010年5月,新版本已经发布,因此对于eclipse RCP开发人员来说这是一件非常好的事情。当我尝试时它不存在学习它。我对那些不发布新版本的作者感到沮丧,几乎让新的开发人员陷入困境。不是每个人都喜欢阅读文档。不发布更新的书几乎等于杀死技术)。我很想看到这两个平台的食谱类型书。4)Netbeans拥有完整的集成GUI构建器,这是一个很大的优势。 Eclipse RCP,要么必须手工编写代码,要么购买一些第三方GUI构建器。
5)Netbeans平台有一个非常酷的Lookup api用于模块间通信。我猜eclipse的人为此目的使用扩展点。但是一旦你掌握了它,查找api很容易。6)无论如何,它是一个重大的设计决定,关于选择哪个平台。 Netbeans平台适合我。它可能对你不起作用。这两个平台都需要努力,都提供了精彩的“开箱即用”功能。试驾两个然后决定。
答案 2 :(得分:6)
我建议你看一下JSR 296 - 它还没有任何完整性,但我认为它可以提供你真正需要的每个Java GUI应用程序的某些核心功能,而不会强迫你生活在一个过于复杂的框架中。
我成功使用JSR 296创建了一个中型应用程序。对于此应用中的窗口布局,我们使用MyDoggy(强烈推荐)。对于布局管理,我们使用MiGLayout(超越强烈推荐)。对于数据绑定,我们使用JSR 295的修改形式(我们在JSR 295之上实现了类似于PresentationModel的东西,我们用于GUI绑定)。我正在将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运行时只是不起作用)。毫无疑问,如果您的应用程序需要重要的插件功能,Equinox是一件很棒的事情(当然,您也可以使用JSR 296运行Equinox,或者使用类似于OSGi推广的Whiteboard模式的设计模式)。
答案 3 :(得分:4)
我有使用Eclipse RCP的经验,并会推荐它。
优点:
缺点:
如果你选择了Eclipse RCP,那么在开始使用这个框架时,它是非常有用的:http://www.amazon.com/Eclipse-Rich-Client-Platform-Applications/dp/0321334612
答案 4 :(得分:3)
我目前正在开发Spring RCP应用程序。文档非常薄弱,这是肯定的,但博客和论坛有大量的信息可以开始。一旦你完成巡航,事情确实移动得相当快,如果你不熟悉框架,你真的只需要学习基本的Spring。与VLDocking等Spring库的集成也很出色。
如果您的用例是开发独立的Java桌面应用程序,我认为Spring Rich非常棒。我的意思是,如果您不需要分发模块并进行在线更新,那么它应该满足大多数需求。
答案 5 :(得分:1)
从我的最终用户角度来看。
我在Eclipse中看到的实现比其他两个更多。实际上我已经了解了Netbeans的实现,但从来没有掌握过。
从春天开始,这是我第一次听说它。
虽然我的答案肯定是一个超过10,000英尺的视图,但它反映了该行业对使用其中一个的偏好。
此外,差异与平台可用时间成正比。记住Eclipse创建SWT来解决Java Swing在1.3中遇到的问题,其中只是非常慢。
Netbeans已经受到JVM改进的极大好处,现在运行速度非常快。
春天仍然年轻(与其他两个相比),但一如既往,新事物从前者中学习,很有可能使用起来更简单。
这是一篇关于这两个平台Eclipse RCP与Netbeans RCP的文章。可能会有所帮助
http://blogs.oracle.com/geertjan/entry/eclipse_platform_vs_netbeans_platform
答案 6 :(得分:1)
虽然我没有明确地使用它们中的任何一个,但我已经使用了部分Eclipse RCP。具体来说,我使用了Eclipse OSGi运行时(Equinox)和一些常用的实用程序,我非常高兴。 OSGi非常棒。我有几个朋友在大型合同上使用Eclipse RCP(比我使用的更多)并且他们赞不绝口。
如果我的项目不包含大量的旧版Swing,那么Eclipse RCP将是我的首选。 OSGi真是太有趣了! (我想Spring也使用它,但没有检查过)
答案 7 :(得分:1)
当然,这完全取决于您要提供的应用程序和服务的类型以及目标环境。但我也可以推荐OSGi作为开发和部署平台。底层架构和规范已得到很好的开发和验证。
除了Eclipse RCP之外,您还应该看看Apache Felix(http://felix.apache.org)和Knopflerfish(http://www.knopflerfish.org),它们是(较小的)开源OSGi框架实现。
答案 8 :(得分:1)
Netbeans RCP非常出色。多年来,它走过了漫长的道路。它使用了许多人使用和理解的更强大的技术('Swing')。 Eclipse RCP(更具体地说是SWT)让我很困惑。
答案 9 :(得分:0)
Eclipse RCP提供了插件机制,以便您稍后可以在部署中添加新功能。同样通过更新机制,您可以在不受用户干扰的情况下更改系统。在开发阶段,Eclipse RCP提供了一个快速,强大的基础,包括透视图,视图,编辑器,命令和操作机制。如果您的项目需要许多具有不同工具栏和菜单的窗口(以及自定义上下文菜单),我建议您使用Eclipse RCP。我只检查Netbeans平台的视频并运行Helloworld项目,但它似乎缓慢而笨拙:) 40秒启动(你可以重新加载应用程序虽然没有重新启动。)vogella.de是一个很好的教程集合Eclipse RCP
答案 10 :(得分:0)