首页 文章

Java开发GUI的未来? [关闭]

提问于
浏览
13

考虑到这一点

  • Sun / Oracle决定在他们"invented" JavaFX之后不再开发Swing

  • JavaFX无法正常工作some consider it a failure already

  • SWT并不是真正独立于平台的特性,处理GUI元素的手动任务以及捆绑特定于平台的库的必要性

还有另一条出路吗?

如果我想在JVM上进行GUI开发

  • 有一个很好的API(Swing和SWT也不错,但它们也不是很好 . )

  • 哪个"feels"响应(尽管声称这已经解决了,但今天Swing和SWT仍然存在问题 . )

  • 在几年内不会过时,我应该做出什么决定?

是否有可用的第三种选择或未来可能有一种选择?

一个选项

  • 快速响应(不是Swing的"If it's not fast, it is the developer's fault"的意识形态)

  • 具有原生外观

  • 具有在所有平台上运行的单个库

这是现实的吗?

谢谢!

=========

澄清:如果我必须在JVM上启动一个新的软件项目,有几个现有的选项,如使用SWT或Swing,使用Swing与第三方库,如SwingX,JIDE,JGoodies,Flamingo或使用Netbeans Platform等应用程序框架或Eclipse RCP . 是否有支持/建议的方法可以减轻通常与Java GUI开发相关的痛苦?

2 回答

  • 7

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

    SWT

    我个人的偏好是SWT . 我开始使用它,当Swing不好选择时 . SWT“只是”本机窗口API之上的一层,因此使用SWT编写的应用程序就像本机编写的应用程序一样 . 那些也可以搞砸了 . 对于糟糕的开发人员来说,没有API是安全的 . 性能和我的经验一样快 . 如果不是,那么还有另一种方法可以实现它 .

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

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

    Qt Jambi

    实际上我希望除了SWT和Swing之外还包括另一个选项:Qt Jambi . 但诺基亚放弃了这一点,现在是"maintained by an open source community" . 所以我不知道"not being obsolete in a few years" .

    尽管如此,我对这个正在进行的discussion感到很兴奋 . 有些人使用Qt Jambi编写了一个SWT实现作为"native" API . 他们正试图弄清楚如何贡献它 . 将Qt作为一个选项可能会在某一天启用你的"single library which runs on all platforms" for SWT,尽管我不会很快指望它 .

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

    秋千

    我无法将SWT与Swing进行比较,因为我对Swing的体验受到限制 . 作为一个用户,我不喜欢大多数Swing应用程序,但我确实看到了一些美丽的应用程序 .

    如今,Swing应用程序的原生外观和感觉非常好,但你不会欺骗高级用户 . 在新的和做得好的Swing应用程序中,性能似乎也非常好,但同样,这只是作为用户的限制视图 .

    显然,Swing的第三方扩展比SWT更多 - 只需进行谷歌搜索 . (但话说回来,如果你忍受学习Eclipse RCP的痛苦,你就不会讨论小部件了,那就像EMFRAP . 我不是Eclipse RCP的人 - 我从来没有足够的耐心......)

    如果你喜欢这些东西,Swing的一个非常大的优势就是Netbeans的GUI构建者Matisse . 顺便说一下,Qt还有一个做得很好的GUI构建器 .

    摘要

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

  • 8

    答案是 prefer swing ,我想 .

    自1.4以来

    • 在awt上有很大进步(sun这样做因为java fx需要awt,幸好)

    • 自1.5在线程管理方面取得了很大进展(SwingWorker和concurrents things)

    • swing非常好,反应灵敏(开发者故障有什么问题?),原生l&f等等

    • 有优秀的库,如swingx,trident等,以及netbeans等平台 .

    当然这是一项成熟的技术(有点旧),但我什么都不知道 . 这将是GUI开发的cobol :-)

相关问题