gpt4 book ai didi

Java 外汇 : declarative vs procedural

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:59 25 4
gpt4 key购买 nike

我具有基于 Web 的编程(php、jsf 等)的背景,并且对 swing 和 swt 的了解很少。

目前,我正在研究用于新桌面应用程序的 java fx 2.x,我想知道有关构建实际 GUI 的最佳实践。我可以使用 fxml 走声明式路线,也可以走过程式路线。目前,为了一些快速原型(prototype)制作,我正在做后者,但我想知道是否有令人信服的理由使用 fxml。

更新

最后,我为一个中等规模的项目选择了 FXML 路线,尽管场景构建器 beta 在我的 linux 系统上仍然有些不稳定,但它已被证明远远优于原始程序原型(prototype)。到目前为止,最大的优势是许多元素(尤其是 hbox、vbox、标签、选项卡...)不再使我的代码困惑,因为它们只存在于 fxml 中。

最佳答案

甲骨文推荐

查看 Oracle 建议:

  1. Why use FXML
  2. Implementing JavaFX Best Practices

Oracle 确实建议通过 Java API 使用 FXML 进行布局定义。

JavaFX 的替代声明技术

JavaFX 中的其他声明部分是 CSS3D models

半声明方法是 JavaFX Builder API , 但您可能希望避免使用 the builder api will be deprecated in future JavaFX versions .

此外,如果您使用其他语言编程,其中一些语言会嵌入用于 JavaFX 开发的声明性领域特定语言 (DSL),(例如 ScalaFXGroovyFX)。

一般来说,声明性语法的使用主要胜过大多数 UI 标记任务的过程式编程。这可以从 HTML、CSS、FXML、XAML、MXML、XUL 等技术的突出表现中看出。

底层编程

对于开发自定义 JavaFX 控件、操纵 JavaFX Canvas 或处理图像数据等低级任务,过程 Java API 最适合而不是使用声明性 FXML - JavaFX codebase in openjfx使用 FXML。

个人选择和建议

最后,这里没有正确答案。选择留给开发人员选择他们最喜欢的方法。

也没有理由不能按照您认为合适的方式混合这两种样式。与混合过程性和声明性方法(例如 html + javascript + ajax)的东西相比,使用直接的声明性方法会给您带来非常严格的 UI(例如静态 html 页面)——JavaFX 也是如此,因为它是在这种情况下用于 html 开发。

对于小程序,我喜欢只在 IDE 中编写一些代码,编译并运行它,而不必处理基于 XML 的 FXML 和 Java 代码之间的上下文切换。但我发现,这种仅限程序的方法无法轻松扩展到更大的项目。将 View 分离成 FXML 有助于强制关注点分离和模块化。如果没有 FXML 要求的人为分离,将这些 View 和逻辑问题混合起来太容易了。

我不太喜欢将 XML 作为 UI 布局语言。我认为来自过时的 JavaFX 1.x 分支的现已失效的 FXD 格式要好得多。但是,FXML 是 JavaFX 2 最易于访问和使用最广泛的声明性 UI 语法。

我经常将 CSS 与 JavaFX 程序一起使用,并且喜欢将它与 FXML 声明性代码和 Java API 过程性代码一起使用。在我看来,将样式与代码分离至少与将布局与代码分离一样重要。

使用 CSS 时,最好将样式放在单独的样式表中,而不是在代码中内联样式。

正如在另一个答案中指出的那样,JavaFX SceneBuilder 可视化设计工具目前仅适用于 FXML,撇开所有其他因素不谈,这足以让许多人使用 FXML 来定义他们的 JavaFX UI。

关于Java 外汇 : declarative vs procedural,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16161781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com