这些技术是否有 Java 替代品?我发现最常用的数据绑定功能和 INotifyPropertyChanged(以及容器和元素之类的),但 .NET 跨平台的缺乏让我想到了 Java。你有什么建议?有没有同类产品?一种实现 XAML 的?
2 回答
技术(WPF)
如果您正在为 Java 平台寻找 WPF 的替代品,您应该看看JavaFX。
该技术在以下方面与 WPF 非常相似:
- 应用程序用户界面由对象树组成,称为由对象组成的场景图
Node
(类似于由UIElement
对象组成的 WPF 可视化树)。 - 该
Pane
节点及其派生项在概念上类似于 WPF 布局面板。 - 可以使用类似于 XAML 的称为 FXML 的标记来创建用户界面。
- JavaFX 提供了表示支持绑定和更改通知的属性的对象(想想依赖属性)。与依赖属性不同,它们不依赖于用户界面技术,因此可以由您的模型类使用。
- 用户界面可以使用 CSS 设置样式。
看看我对JavaFx 如何与 WPF 进行比较的问题的回答,它提供了 WPF 和 JavaFX 的更详细(但仍然是高级别的)比较。
设计模式(MVVM)
MVVM 模式是表示模型模式的一种特殊形式。可以在 JavaFX 中创建它的变体,因为平台提供支持绑定的属性,并且表示模型基本上是一个对象,它封装模型的状态并提供作用于该状态的操作。
尽管我看到的大多数示例都使用了模型-视图-演示者模式的变体。开箱即用的 JavaFX 支持一个非常简单的 MVP 结构,其中每个视图都与一个“控制器”类相关联。这对于小型应用程序来说很好,但并不能真正提供很好的关注点分离。
也许您应该关注出色的MVVMFX 框架。基于 WPF 和 JavaFX 之间的相似之处,例如描述性 UI 声明 (FXML/XAML),他们尝试采用 WPF 开发的最佳实践。
当然,它支持数据绑定概念,并为视图、视图模型和模型之间的通知实现必要的接口。UI 及其 UI-Logic(代码隐藏)通过 fxml 文件(使用 Scene Builder 创建)和必需的 Java 类来实现。有很多很好的例子,理解它们的概念并不难,因为它是最纯粹的 MVVM 模式的严格实现。您所需要的只是在您的项目依赖项中建立框架。