技术开发 频道

Swing那么受欢迎,为啥JavaFX屡被唱衰?

  【IT168 资讯】JavaFX现在是Java SE 8 SDK的一部分。想当年,Swing十分受程序员喜爱,而JavaFX似乎负面新闻不断。本文,Java Champion Johan Vos给出了JavaFX的基本概述,并解释了为什么应该使用JavaFX而不是Swing。

Swing那么受欢迎,为啥JavaFX屡被唱衰?

  JavaFX框架包含许多API,允许开发人员使用Java语言创建用户界面。JavaFX在2007年的JavaOne会议期间被发布。在此之前,用于在Java中创建用户界面的标准API是AWT和Swing API。在JDK 1.2(1998)中已经添加了自Java(JDK 1.0,1996)以来平台部分的AWT API和Swing API。

  显然,UI技术在1996年至现在有了很大的变化。2007年,Sun Microsystems认为是时候在Java平台中开发一套新的、面向UI的API了。2011年,JavaFX 2.0发布。至今,JavaFX增加了很多新功能,其代码是在OpenJFX存储库中开发的,与正在开发核心Java SE API的OpenJDK存储库齐平。

  全新的JavaFX

  有许多具体的设计元素使JavaFX与其前身(AWT和Swing)不同,这些元素使程序员的生活更加轻松,并将用户界面的开发与Java开发整体结合起来,程序员不必过度关注底层和细节性的东西,只需关注具体的用户界面设计即可。

  JavaFX使用场景图来组织图形对象,场景图提供了一个由节点组成的树结构,节点具有特定的渲染指令,并且还可以包含子节点。现在,场景图的方法在基于矢量的渲染应用中非常受欢迎。

  JavaFX是一个现代的UI框架,它使用保留渲染而不是立即渲染的方式。在保留渲染模式下,程序员本身不改变图形,只是向渲染引擎发出指令(例如,添加按钮,确定操作范围等)。最终,渲染引擎将基于程序员的请求在屏幕上渲染图像。

  JavaFX渲染系统允许多管道操作,尽可能使用硬件加速。在Windows上,使用Direct3D。在大多数其他系统(Linux,Mac,iOS,Android,嵌入式ARM)上,使用OpenGL。由于这种硬件加速渲染,大量的工作从CPU卸载到GPU。这使得程序员可以在JavaFX中创建非常优秀的应用程序,并从GPU中获益。

  UI控件的动态绑定

  JavaFX引入了可视和绑定的概念。虽然这些不是特定于UI的,但它们在处理用户界面时特别有用。JavaFX Observable接口的实现允许其他注册对象对Observable进行修改。该概念用于将用户界面控件与数据动态绑定。例如,JavaFX ListView控件由ObservableList(其中ObservableList扩展Observable)支持。如果添加的元素做ObservableList,那么ListView会立即渲染这些元素(只要它们在屏幕的可视部分)。

  当写得好的时候,JavaFX应用程序会在具有多个CPU或内核的环境中表现很好。专用线程用于对场景图进行更改,所有其他计算建议在不同的线程上执行。这种方法允许开发人员确保场景图始终处于一致状态,同时尽可能多地利用多核架构。

  从Swing继续前进

  JavaFX的前身Swing非常受欢迎,用于开发在桌面系统上执行的Intranet应用程序。许多大型企业有复杂的Swing应用程序,允许员工执行与业务相关的功能。典型的垂直市场包括金融业、医疗保健和电讯业。Swing很长一段时间以来都是默认的Java UI框架,所以现在很多应用程序非常复杂并不奇怪。

  许多公司也正在看到JavaFX的好处,并将现有的Swing应用程序迁移到JavaFX。虽然JavaFX有一个学习曲线,但对许多程序员来说是相对简单的。同时,JavaFX API与Java SDK的其他API非常一致。

  JavaFX:可移植到移动端

  使用JavaFX的另一个原因是其应用程序可移植到移动设备上。最流行的移动环境(Android和iOS)也允许基于OpenGL的渲染。OpenJFX存储库中的JavaFX代码也适用于这些环境,结合Gluon Mobile工具,开发人员可以轻松地将JavaFX应用程序运行到Android或iOS的原生应用程序,并将其上传到Play Store和AppStore。

  因此,应用程序不仅可以通过桌面系统访问,还可以通过越来越多的流行终端访问。

  结论

  早期的JavaFX API非常不稳定,但是现在,其API是成熟稳定的。向后兼容性对于Java语言来说非常重要,因此,程序员不应该期望在官方的JavaFX API中进行大量实验。有许多第三方举措,如ControlsFX和JFXtras,其中包含高级或特定的UI控件和小部件,对程序员来说非常有用。JavaFX社区包含大量积极的程序员,他们愿意贡献自己的想法和代码。通过官方提供JavaFX的稳定性和成熟度,结合社区成员的热情和贡献,JavaFX将成为Java程序员进行UI开发的较好选择。

5
相关文章