富客户端平台与 JavaFX 2 与 Swing

2022-09-04 20:11:14

很快,我们将需要开发一个GUI来为我们的EAI解决方案创建配置(说实话,更像是脚本)。想想一个典型的工作流编辑器。实际流的可视化很可能是一个完全自定义的工作,无论是在Swing,SWT还是JavaFX 2中。我在选择时遇到的困难是自己还是使用富客户端平台来做其他事情。

特别是,我注意到JavaFX 2正在受到很多关注,并且似乎真的被Oracle推动为Java GUI领域的下一件大事。演示看起来很有趣,也许这个较新的API更专注于生产力,而不是Swing倾向于强加的大量样板代码。使用获得大量支持的新技术似乎是未来维护的安全选择。

使用RCP将为该项目带来明确的好处。无论我们选择 Eclipse 还是 NetBeans 作为平台,拥有用于查看底层 (XML) 配置、版本控制等的现有插件/模块都将以最少的工作量提供强大的功能。我也喜欢将我们软件的项目类型放在同一GUI中Java项目旁边的想法。即使是像窗户管理和自定义排列面板这样简单的东西,RCP也可以更好地处理我们可以鞭打的东西。

所以现在的问题是,什么技术或它们的组合是可行的?据我所知,我的选择是:

  • 日蚀。不过,我不太热衷于使用SWT,因为我对Swing更熟悉。NetBeans 也是我的主要 IDE,我对它最熟悉。它总是感觉更直观。
  • 网豆。这将允许在Swing中开发自定义组件。对我来说,学习曲线较低。
  • NetBeans + JavaFX 2.这个想法吸引了我...使用 NetBeans 获得 RCP 特性,并使用 JavaFX 2 实现自定义组件。JavaFX 2 显然与 Swing 集成,但是在 NetBeans 中,这有多好呢?
  • Swing 或 JavaFX 2。自己完成所有 GUI 工作或使用一些现有框架来获取 RCP 提供的大部分功能。这似乎是很多工作,但也提供了极好的控制。我有点讨厌在Swing中尝试这个。JavaFX 2如何适应这一点?

基本上,我唯一的GUI体验是在小应用程序的Swing中。这是我第一次选择需要RCP的东西。但是JavaFX 2似乎是前进的方向,我不想错过那艘船。如果Swing可能即将退出,我宁愿跳上更新的技术。

如果有人可以分享他们的经验,尝试过像NetBeans + JavaFX 2这样的东西,或者更接近JavaFX的最前沿,并且可以推荐/阻止将其用于这种事情,我会最感兴趣。

我意识到这是一个有点开放的问题,但我真的想不出一个更合适的地方。我不是在寻找“什么是最好的RCP /JavaFX比Swing更好”的辩论。我正在寻找支持/反对在这种情况下使用它们的有效观点。


答案 1

我的意见几行,

JavaFX2可以集成到Swing和SWT应用程序中,形成一个面板/容器。

Swing没有提供结构化的架构来处理多组件应用程序,Eclipse RCP提供了,但它更重,有时太复杂(WindowWorkbench等)并且难以定制。

如果你的团队中有一个好的UI设计师(开发人员或平面设计师),你应该开始使用一个应用程序Full JavaFX2,它有一个简单但功能强大的框架(如JRebirth或一个自定义的框架,你可以按照自己的方式构建)。

JavaFX将在未来几年成为Java UI标准,它可能不是一个糟糕的选择,因此它的架构非常好,功能强大,而且javaFX2可以在JNLP的帮助下用于浏览器和/或在线部署。不要打扰你学习复杂的未记录的框架(如EclipserRCP),创建你的!并可以自由地使您的客户所需的应用程序:D

我在Swing Appz上工作了3年,在Eclipse RCP上工作了2年,在Flex / Silverlight / JavafX应用程序上工作了2年


答案 2

以下是一些要点和(个人)意见,可帮助您确定适合您当前情况的适当解决方案:

Eclipse vs. Netbeans

就个人而言,我不喜欢关于IDE的利弊的大讨论。只需使用您觉得最舒服的那个。如果您在团队中工作,请进行投票。考虑到Swing两个IDE都很好(恕我直言,Netbeans有更好的GUI构建器)。考虑到JavaFX 2.0,两个IDE也很好,但都缺少GUI构建器。我不建议混合使用IDE。

JavaFX 2.0 vs. Swing vs. SWT vs. Eclipse RCP

好吧,我不 - 我甚至不能 - 想告诉你上面列出的UI技术中哪一个是最好的,因为我对你的项目环境不够了解 - 经验,人力资源,预算,时间表等。拥有精益的时间表和一支由经验丰富的Swing开发人员组成的团队(?)应该领导Swing的决定。SWT和Eclipse RCP也是如此。尖端开发人员可能倾向于尝试JavaFX。我同意,JavaFX得到了很多关注,你得到了很好看的演示,但请记住,使用JavaFX需要 - 除了JRE之外 - 每个客户端上的JavaFX运行时。

希望这有帮助。


推荐