JavaFx 与 TornadoFx

JavaFx vs TornadoFx

我已经开始研究 javafx。我想知道 javafxTornadofx 之间的区别。它们是如何相互关联和彼此不同的。

还有什么时候用什么。

是否存在 javafxTornadofx 更 useful/advised 或反之亦然的情况?

JavaFX 更像是一个工具包(它具有构建 GUI 所需的所有基础)。它是一个功能完备的 "toolkit",但它非常冗长,并且语法包含样板代码,这使得它难以维护。这就是 TornadoFX 的用武之地。TornadoFX 就像一个基于该工具包的框架,它消除了所有样板代码,并使 GUI 构建具有声明性,以至于它类似于 HTML。

此外,即使 TornadoFX 可以在 Java 中使用,它也可以在 Kotlin 中使用(JavaFX 也可以在 Kotlin 中使用,没有任何问题)。

TornadoFX 简化了 GUI 构建过程(使代码更清晰),但它使用 JavaFX "under the hood",因此可与 JavaFX 互操作。 例如,您可以在纯 JavaFX 代码中创建一个小部件,然后在 TornadoFX 中使用它,或者,例如,在 TornadoFX 中创建一个整体 window,然后从 JavaFX.

这里的主要内容是 TornadoFX 不以任何方式限制 JavaFX,您仍然可以从 TornadoFX 获得低级 JavaFX 内容。

除了 GUI 构建器之外,TornadoFX 还包含有用的工具,例如 ViewModel 类,它将 GUI 和逻辑分开(可用,但不是强制性的),以及一些其他有用的工具。

就个人而言,我一直使用 TornadoFX,因为它使代码非常简洁且易于维护,同时,JavaFX 的任何功能都不会丢失。

当前接受的答案没有回答这部分

Are there any cases where javafx is more useful/advised to use than Tornadofx

已接受答案的要点是,对于标准的简单 GUI,Kotlin 与 TornadoFX 相结合将使您快速 运行。这是真实的。 直接 JavaFX 更好的一些示例:

  • JavaFX 3D 子场景
  • 与 Swing 的互操作(我不确定你会如何在这里使用 Kotlin,但也许 TornadoFX 本身就可以工作)
  • Canvas 基于渲染
  • 高性能自定义事件处理

显然,这些场景并不代表大多数 GUI 应用程序,而是高性能和自定义渲染类型的应用程序。所以一般来说,如果您是从头开始……也就是说……您还不精通 JavaFX,那么使用 TornadoFX 是一个很好的起点。

关于选择使用 Kotlin 作为起点的说明也很有趣。我个人并不认为它比只用 JavaFX 编写有优势,但我有很多 JavaFX 经验,所以我可能会有偏见。此外,虽然您不是被迫这样做......但在没有 intelliJ 的情况下在 kotlin 中进行开发是很痛苦的,而这正是该公司最初制作 Kotlin 计划的一部分。

综上所述:

and the syntax contains boilerplate code

这在一定程度上是正确的,Tornado 确实通过强制您使用一组标准化的 API 来减少样板文件。 但是...

which makes it hard to maintain.

我不同意。不是"hard"维护。这是你 copy/paste 一次的代码,可能再也不会改变了。我们不应该急于以 "maintainability" 的名义从我们的代码库中隐藏和封装每个最后的 ASCII 字符,同时向我们的性能发射鱼雷。