【问题标题】:Java desktop application frameworks vs. JavaFXJava 桌面应用程序框架与 JavaFX
【发布时间】:2016-05-03 08:46:09
【问题描述】:

有很多 Java“应用程序框架”,例如 http://pivot.apache.org/demos/ 中列出的那些,它们几乎都使用 Swing 作为 GUI 工具包,或者在 Eclipse 的情况下使用 SWT。

但是我还没有看到任何明显的 JavaFX 框架。这是为什么呢?

如果查看框架调用您的“好莱坞原则”,我会认为 JavaFX 已经做到了这一点,但后来我感到困惑,因为看起来 Swing 和 JavaFX 的作用几乎相同,即作为 GUI层。但他们都做事件循环和回调/事件/观察者模式等。

仅仅实现一个事件循环并调用您的事件处理程序不符合“应用程序框架”的条件吗?

如果没有,是否有任何直接基于 JavaFX 的框架(而不是将 JavaFX 嵌入到 Swing 控件中)?这样的框架会提供哪些 JavaFX 独立版不具备的功能?

对不起这个问题的“显而易见性”,但这对我来说并不明显。

谢谢。

【问题讨论】:

    标签: java javafx frameworks


    【解决方案1】:

    在我看来,Swing、JavaFX 和 SWT 都是图形工具包,提供了一组基本的小部件。没有“应用程序”框架,因为它们的主要目标是显示用户界面。但是您可以使用它们通过基本功能构建一个没有任何其他库的应用程序。

    可以在这里找到一个很好的示例应用程序:https://github.com/angelicalleite/museuid

    从 mysql 数据库中提取的数据看起来非常好,但是如果您仔细阅读源代码,您会发现所有 SQL 查询都是在 UI 线程中执行的,这会减慢 UI 响应速度。

    这是您应该使用应用程序框架的原因之一。 他们的目标多种多样,但他们都致力于通过将复杂的事物(如多线程、消息传递)排除在应用程序代码之外来简化应用程序开发。

    您的选择应根据您对要使用(或不使用)的架构和依赖项的个人信念来完成。

    我是 JRebirth(免责声明)的作者,但我有时会查看其他框架,因此您可以通过问自己一些基本问题来做出选择:

    您想要/需要 OSGI 支持吗?

    => 是 efxclipse、DromblerFX、DEMUX

    => 没有 JRebirth、JacpFX、DataFX、griffonFX、afterburner.fx

    你想要一个极简的框架吗?

    => 是的 afterburner.fx

    您想要/需要事件消息吗?

    你想分享代码吗?

    你想要模块化吗?

    您需要 Java 7 支持吗?

    您希望如何管理您的应用程序线程。

    我当然忘记了很多问题。

    事实上,您应该使用这些应用程序框架之一(构建自己的应用程序框架会很耗时),它肯定会加速您的开发并保护它们,剩下的问题是:

    • 哪种 AF 能满足您的需求?
    • 哪种 AF 对您和您的团队更方便?

    使用您不喜欢的模式选择 AF 可能会很痛苦,但无论如何您都可以为任何可用的 AF 做出贡献,因为它们都是开源的。

    希望对你有帮助,

    【讨论】:

      【解决方案2】:

      有很多看起来你的研究还不够彻底

      由于我是 e(fx)clipse 的作者,所以我有偏见,但我亲身了解它用于(大型)商业项目

      【讨论】:

      • 感谢您指出这些。在这一点上,efxclipse 中列出的很多东西都让我头疼。
      • 简而言之,框架为您做了什么?看起来很多框架的东西都是关于插件、模块和消息传递的;看起来它们也用于引导自己的 IDE。
      【解决方案3】:

      对此的简单回答是:JavaFX 比 Swing 更年轻——至少作为一个标准的 JDK 库。事实上,它只是在 Java 8 中成为“真正的”标准部分。如果您查看history,您会看到以下事实:

      • 在 JavaFX 2(2011 年发布)之前,开发人员需要学习脚本语言。
      • 同样在 JavaFX 2 之前,该实现旨在独立于平台,因此不使用可以在图形和动画方面产生重大影响的系统特定资源。

      通读它,您会发现一些更有趣的细节,这些细节可以概括为可能大多数开发人员只是在过去 5 年左右的时间里才“认真”地注意到 JavaFX。 Swing 可以追溯到更远的地方(特别是在被纳入标准 Java 运行时环境时),因此自然有更多针对 Swing 的库而不是针对 FX 的库。

      【讨论】:

      • SWT 也已经存在很长时间了。我认为 IBM 在 1990 年代中期就开始了这项工作。
      • 请注意,尽管 JavaFX 现在是 Oracle Java SE 8 的一部分,但它还不是 Java (JSR) 的标准部分,因此在其他实现中可能不可用。
      猜你喜欢
      • 1970-01-01
      • 2010-09-08
      • 2010-09-14
      • 2012-01-22
      • 2011-10-12
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      • 2016-12-31
      相关资源
      最近更新 更多