【问题标题】:Future of GUI development in Java? [closed]Java GUI 开发的未来? [关闭]
【发布时间】:2011-03-17 07:02:20
【问题描述】:

考虑到

  • Sun/Oracle 在“发明”JavaFX 后决定不再进一步开发 Swing
  • JavaFX 并没有真正工作,some consider it a failure already
  • SWT 并非真正独立于平台的性质,手动处理 GUI 元素的任务以及捆绑特定于平台的库的必要性

还有其他出路吗?

如果我想在 JVM 上做 GUI 开发

  • 具有良好的 API(Swing 和 SWT 还不错,但也不是很好。)
  • “感觉”响应灵敏(Swing 和 SWT 今天仍然存在问题,尽管声称已解决。)
  • 几年后不会过时 我应该做出什么决定?

是否有第三个选项可用,或者将来可能会有一个?

一个选项

  • 快速且响应迅速(不是 Swing 的“如果不快,那是开发人员的错”的思想)
  • 具有原生外观和感觉
  • 拥有一个可在所有平台上运行的库

这是现实的吗?

谢谢!

=========

澄清一下:如果我必须在 JVM 上启动一个新的软件项目,有几个现有选项,例如使用 SWT 或 Swing,将 Swing 与第三方库(如 SwingX、JIDE、JGoodies、Flamingo)一起使用或使用应用程序框架像 Netbeans 平台或 Eclipse RCP。是否有支持/建议的方式来减轻通常与 Java GUI 开发相关的痛苦?

【问题讨论】:

  • “Sun/Oracle 在他们“发明”JavaFX 之后决定不再进一步开发 Swing”这不是真的。他们停止开发 Swing 应用程序框架 (JSR 296),但没有停止开发 Swing 本身。
  • @Tedil:他们表示他们不再打算对 Swing 做任何事情,除了错误修复和支持。
  • 我在哪里可以看到有关 Oracle 停止开发 Swing 的信息?
  • 他们在哪里说过这个。请提供指向我们可以自行验证的来源的链接。
  • 阅读 forums.java.net/jive/thread.jspa?threadID=52665&tstart=0forums.java.net/jive/thread.jspa?threadID=21745 “Swing 是 JDK 的一部分。它不会很快消失。对于许多大型企业应用程序来说,Swing 是最好的跨平台工具包。我们将继续支持并致力于修复 JDK 中的错误。”在过去的 2 年里,这一切都没有改变。

标签: java user-interface api swing swt


【解决方案1】:

我认为答案是更喜欢摇摆

  • 自 1.4 以来,awt 有了很大的进步(sun 这样做是因为 java fx 需要 awt,幸运的是)
  • 自 1.5 以来线程管理(SwingWorker 和并发事物)取得了重大进展
  • swing 非常出色,响应迅速(开发者故障有什么问题?),原生 l&f,等等
  • 有优秀的库,如 swingx、trident 等,还有平台,如 netbeans。

当然这是一个成熟的技术(有点老了),但我什么都不知道。它将是 GUI 开发的 cobol :-)

【讨论】:

    【解决方案2】:

    你不会找到这个问题的客观答案,只有个人喜好和选项。

    SWT

    我个人的偏好是 SWT。我开始使用它,当时 Swing 是一个糟糕的选择。 SWT “只是”本机窗口 API 之上的一层,因此用 SWT 编写的应用程序感觉就像是本机编写的应用程序。这些也可以搞砸。任何 API 都不会受到不良开发人员的攻击。根据我的经验,性能是最快的。如果不是,还有另一种实现方式,它会在哪里。

    SWT 的 API 非常低级,这使得实现基本的东西出乎意料地乏味,但幸运的是,大多数典型的用例都可以用 JFace 解决,从而改善了这种情况。当你使用 API 一段时间后,你会积累自己的 util 类。您可以很快地实现 SWT 工具。

    由于 SWT 只为您提供基础知识,因此您需要 MigLayoutNebula 小部件才能生存。你可能会喜欢Glazed Lists

    Qt 占碑

    实际上,我希望为您提供除 SWT 和 Swing 之外的另一个选项:Qt Jambi。但诺基亚放弃了这一点,现在它“由一个开源社区维护”。所以我不知道“几年内不会过时”。

    尽管如此,我对这个正在进行的discussion 感到兴奋。有些人使用 Qt Jambi 作为“本机”API 编写了 SWT 实现。他们正试图弄清楚如何贡献它。将 Qt 作为一个选项可能会在某一天为 SWT 启用“在所有平台上运行的单一库”,尽管我不会指望它很快。

    但对我来说,您对“单个库”的要求并不是什么大问题。使用 maven 进行构建,添加几行配置,您很快就会忘记这一点。

    摇摆

    我无法将 SWT 与 Swing 进行比较,因为我对 Swing 的经验有限。作为用户,我不喜欢大多数 Swing 应用程序,但我确实看到了一些漂亮的应用程序。

    如今,Swing 应用程序的原生外观和感觉已经相当不错,但您不会欺骗高级用户。此外,在新的和出色的 Swing 应用程序中,性能似乎非常好,但同样,这只是从我作为用户的有限观点来看。

    显然,Swing 的第 3 方扩展比 SWT 的多 - 只需进行 Google 搜索即可。 (但话又说回来,如果你忍受学习 Eclipse RCP 的痛苦,你也会得到一个巨大的、有趣的基础设施。不过,这不是在谈论小部件,而是像 EMFRAP 这样的东西。我不是 Eclipse RCP 人- 我从来没有足够的耐心……)

    Swing 的一大优势是 Netbeans 的 GUI 构建器 Matisse,如果您喜欢它的话。顺便说一句,Qt 也有一个做得很好的 GUI 构建器。

    总结

    如果您有长期计划,我没有看到比 SWT 或 Swing 更多的选择用于 Java 中的 GUI 开发。如果您花费足够的时间,两者都足以满足大多数需求。但它们并不完美。您总是会羡慕人们使用其他语言的小部件、实现速度、工具……如果您不受 Java 限制,您甚至可能更喜欢 Flash 或 Qt。

    【讨论】:

    • '作为用户,我不喜欢大多数 Swing 应用程序,但我确实看到了一些漂亮的应用程序'——我想我可以对 PHP 说同样的话,这是一种我没有接触过的语言用一个 10m 的驳船杆,因为写蹩脚的代码很容易。鉴于我遇到过多少不了解基础知识的 Swing 开发人员(并因此编写了糟糕的代码),也许 Swing 也有同样的问题。但是TBH,我真的不明白为什么;这些概念并不难。也许更准确的版本“如果速度不快,那是开发人员的错”是“如果速度不快,开发人员没有 RTFM”。
    猜你喜欢
    • 2013-04-30
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    相关资源
    最近更新 更多