Java对WPF的回答是什么?[已关闭]

2022-09-01 00:33:02

我现在主要是一个.Net的人,但我最近一直在玩Java - 探索那里有什么。

现在我正在寻找WPF的Java等效物。我知道我可以找到一两个OpenGL库,但这并不像WPF系统那么丰富或简单。


答案 1

我认为JavaFX,Swing,Java2D和Java基于浏览器的JRE的组合构成了WPF提供的解决方案:

  • JavaFX应用程序(实际上,任何Java应用程序)都可以在浏览器或桌面上运行
  • JavaFX提供高端视频支持
  • JavaFX 提供脚本动画和视觉特效
  • Swing 提供 UI 功能,可以在 Java 和 JavaFX 中使用。
  • Java2D 为所有绘图任务(包括 Swing)提供了基础,它利用了硬件加速和 DirectX 支持
  • 桌面或浏览器上的 JRE 使 Java 应用程序能够部署到多个环境(包括其他屏幕,如机顶盒或手机)

答案 2

我已经编写了Aqua,Macintosh Quick Draw,Windows GDI和GDI +,Qt和.NET Winforms,WPF是迄今为止我使用过的最复杂的API。尽管它具有比以前的技术(如 swing)更好的功能集,但它无法与 WPF 相提并论。它解决了困扰图形编程的一些主要问题。如果你来自HTML / JS世界,它很容易学习,但如果你来自传统的图形编程世界,这是一个重大的范式转变。无论如何,它比CSS / HTML / JS更容易学习。这是对困扰其他图形编程环境的传统概念的彻底突破。

WPF 的最大优势在于它与分辨率无关。它可以跨设备扩展,几乎不需要修改。将图形的屏幕版本输出到高分辨率打印机而不会丢失分辨率几乎不需要任何工作。

它还支持事件触发。UI 元素可以响应其他 UI 元素的事件或应用程序代码,从而使动态界面成为可能。它使您可以轻松地以一种甚至HTML / JS无法实现的方式将代码与UI分开。元素可以广播和侦听事件并做出相应的响应。

另一个优势是其高度面向对象且具有声明功能的API。使用 XAML,只需几行即可轻松快速高效地构造工作接口。与HTML / JS不同,它更容易学习,其输出更具可预测性和效率。您甚至可以完全在代码中对 WPF 进行编程,但通常不值得获得少量的性能提升。更好的方法是将 Xaml 编译为 .NET 代码。

此外,与 JavaFX 相比,可用于 WPF 的工具非常广泛。有大量的工具,包括表达式混合可用。还有许多工具可用于获取矢量图形格式(如 SVG 和 Adobe Illustrator)并将其转换为 XAML。现在,设计人员和程序员可以以一种以前很难做到的方式在桌面出版方面进行协作。

总之,WPF 非常全面,以至于 Mono 团队选择不将其移植到 Mono 代码库。他们声称需要很多年的时间才能完全实现合理的功能集。如果存在与 Mono 兼容的 WPF 版本,则将使 .NET 成为事实上的跨平台应用程序框架。事实上,它甚至可能取代HTML / CSS,因为它更强大,更容易让你头脑清醒。不幸的是,微软没有看到支持跨平台的WPF的业务案例。这就是为什么SilverLight/WPF输给了HTML5/JS。由于这个错误,他们现在不仅被迫将网络而且将部分桌面移交给HTML 5 / JS。


推荐