您是否开始将Swing项目迁移到JavaFX [关闭]


13

我有一个4年的项目,它是用Swing + SwingX编写的。目前,它还活着并且还在踢。

但是,随着更多与GUI相关的功能请求(例如,可排序的树表)的出现,我开始感到难以完成请求。尤其是因为SwingX项目周围没有任何活跃的开发,因此尤其如此。

另外,我几乎找不到任何不错的,但是积极维护/开发/发展的GUI Java框架。

我想知道,Swing开发人员是否有同样的感觉?您是否已开始将Swing项目迁移到更加活跃的已开发GUI框架(如JavaFX)?



7
如果您没有那个Swing,这并不重要。
罗伯特·哈维

摇摆是跨平台的。javaFX2没有..案例关闭。

@blanc在Windows,Linux和OSX上可用。YanChenhCHEOK,TreeTable计划用于JavaFX 8(今年晚些时候(可能是9月)与Java 8一起发布)。
assylias 2013年

Answers:


9

我个人将转向JavaFX(2.1+,而不是具有令人讨厌的脚本语言的旧版本1.x)。新的JavaFX并不是100%完美的,但是使用它已经比Swing更令人愉悦了,我认为它的发展前景是合理的(特别是考虑到嵌入式Webkit引擎)。


9

我经常问自己同样的事情,但是我不认为我会将现有项目迁移到JavaFX。至少目前还没有,而且不适用于中大型项目。但是,我将考虑将JavaFX用于新项目,并在将来再次考虑进行迁移,并根据JavaFX的进度重新评估问题。

目前,我担心的是:

  • 不成熟

    是的,我们即将推出3.0版,但时间不长,并且仍在进行重大更改。因此,对于大型且规避风险的公司软件,这是一个相对痛苦的地方。

  • 性能

    我还没有看到足够的关于性能差异的硬数据。

  • 小部件和组件

    我还没有在新组件中获得足够的收益。我猜这可能与不成熟有关。与Swing相比,我还不知道它们的扩展和组合程度如何。

总体而言,我想关于优势的硬数据是我无法被JavaFX完全说服的东西。

另一方面,Swing已经过验证和测试。是的,该API很笨拙,并且在IDE中对像JTextPane这样的Swing对象调用自动完成功能会使它哭泣,但如果您足够了解,则可以使用Swing构建很棒的UI,表现良好(我从来没有买过Swing表现糟糕的谬论,请参阅Sun博客上Romain Guy以前的博客文章),并允许您做一些漂亮的事情。

因此,在切换任何内容之前,我建议您首先尝试一个小的原型,然后尝试移植一些应用程序的对话框并查看其运行方式。


5

我现在已经做了很多JavaFX,并且我喜欢它而不是Swing。场景图结构与您使用Swing时所用的结构不同,但是它提供了很多改进。该API使用起来很有趣,令人耳目一新。

您可以使用它做更多的事情,包括多媒体,动画,网页浏览。例如,您可以用几行代码(嵌入html5和javascript)来构建Google Maps应用程序

据说它包含在Java 8运行时中,这意味着将Swing作为默认ui框架的明确替代。

@Migration:您应该首先隔离应用程序中可以转换为JavaFX的部分。Swing-JavaFX 2的互操作性是一件大事,您可以使用javafx.embed.swing.JFXPanel嵌入JavaFX元素。请参阅swing-fx-interoperability。(为完整起见,您也可以嵌入SWT中。)


不要尝试swing-jfx互操作性,这很容易出错。我在我的应用程序中尝试过它,它在netbeans中可以工作,但是如果我尝试直接运行.jar,则会遇到与内存/线程相关的奇怪错误。在我看来,请重新开始。
点击Upvote 2012年

4

Swing正在或已经成为一种遗留技术。但是,它的作用很好,并且在任何可预见的将来都不会消失,因此,我认为没有理由放弃它,尤其是如果有人已经对其进行了投资。JIDE Software制造了良好的(商业)Swing组件,以替换标准Swing中缺少的组件。例如,可排序的树表开箱即用在其网格中。


3

尽管新的JavaFX版本看起来非常令人印象深刻,但我怀疑是否值得进行完整的迁移,除非您愿意花费大量时间/精力/金钱来对GUI进行彻底的检查。

秋千可能有其独特之处,并显示出它的年龄,但它也有一些优点:

  • 强大的跨平台功能,目前比JavaFX好得多
  • 它已经成熟并经过验证,比JavaFX更为重要
  • 它拥有庞大的用户社区/图书馆生态系统
  • 您可能已经具备很多Swing技能,或者可以轻松雇用他们

最终,如果它没有损坏,为什么要修复它?

当然,对于一个新项目,我将非常认真地研究JavaFX,Android和/或基于Web的GUI(也许使用Vaadin之类的东西)。


JavaFX跨平台功能是否存在任何问题?
点击Upvote 2012年

上次我检查Windows,Mac和Linux是否支持JavaFX。如果您还针对其他平台,则值得检查其状态....如果您正在寻找广泛的跨平台功能,那么Swing仍然是一个安全的选择(截至2012年中)。
mikera 2012年

还有哪些其他感兴趣的平台?
点击Upvote 2012年

1

我和OP处于同一位置-拥有旧的swing应用程序,但需要实现它本身不支持的新习惯用法和接口。由于各种原因(提高了模块性,更好的MVC和事件分发结构等),已将这些应用程序中最大的应用程序进行了几次重构,因此我并不完全反对重写UI代码。所以我在这个问题上考虑了很长时间。

但是,如果不花更多的时间和精力在本质上是一项遗留技术上,则Swing无法解决某些问题。例如,除了简单的鼠标事件外,Swing本身也不支持新的触摸屏设备。提供基于Swing的浏览器组件同样麻烦或昂贵,就我而言,javafx-in-swing方法不是一种选择,因为它以非平凡的方式使UI事件处理变得复杂。

我认为它已经过时并且忠于它的时代,如果您的平台与您的代码库一样不变-坚持下去。但是对于要进入新的更现代用例的应用程序而言,JavaFX 2+可能会成为我的案例中的前进方式。

附带说明一下:我本来希望在jfx中消失的Swing中的一个缺点是-但不是-是UI事件分发的单线程到所有规则的所有方法。任何不平凡的用户界面都需要多线程来保持UI的清晰和响应,并且完全由应用程序开发人员来解决相同的陷阱,这很容易导致API IMHO的不足。


0

我在大型的基于桌面的应用程序中使用RCP有丰富的经验。它基本上是从Eclipse GUI层的抽象开始的,从那以后已经走了很长一段路。RCP取代了基于AWT的Swing,它基于JFace构建,而JFa​​ce则基于SWT。它允许您开发应用程序并使用Eclipse本身使用的GUI概念(视图,编辑器,透视图,向导等)。它具有很好的可扩展性,并且像Eclipse本身一样,一直在不断改进。

但是,我从未将现有项目从Swing迁移到RCP。我想这会花相当长的时间来围绕不同的范式,如果您还没有很好地分离模型和视图层,那肯定会很困难。但是,由于您询问了诸如可排序树表之类的问题,RCP擅长于此。

如果您想进一步研究,您可能想尝试一下Lars Vogel的教程,或者看看一些使用RCP的开源项目商业项目的示例。


-2

(例如,一个可排序的树表),我开始感到难以完成请求。这是真的,尤其是在SwingX项目周围没有积极的开发。

  • 不对,这个项目还活着吗,

  • 曾经有一次,当SwingX失去了Sun的资助(在Oracle收购期间)时,SwingX的人们去了JavaFX。

而且,我几乎找不到任何好的,但仍在积极维护/开发/发展的GUI Java框架。

  • 没有Swing不是关于Framework而是关于外观

  • 框架适用于非技术用户(MsAccess可能是GUI框架的最佳示例)

  • 但是,如果您想构建一个真正的应用程序,那么您也具有有关Swing的丰富知识,并且重写也来自Framework,

  • 有趣的示例Netbeans内置了基于JSR296的Swing框架,但是无法直接更改JFrames Icon,

您是否已开始将Swing项目迁移到更加活跃的已开发GUI框架(如JavaFX)?

没有理由

  • 与迁移到Java7相同,也许何时会出现Java7.15-17

  • 我将JavaFx与Nimbus进行了比较,开发在上半年结束/放弃了

  • 抱歉,我不是开发人员,我只是Java和Swing Fan


MsAccess是GUI框架吗?
Cheok Yan Cheng 2012年

呵呵是不是???什么问题,平台差异或问题???第一个Java GUI框架非常相似
mKorbel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.