我所做的大多数桌面应用程序开发都是在 Swing 中进行的,我很想知道人们对使用 JavaFX 和/或 Adobe Flex 构建桌面应用程序的想法。您是否成功地使用这些构建桌面应用程序?或者您会暂时坚持使用 Swing 并使用工具来帮助提高 Swing 开发的效率吗?
8 回答
如果您正在制作桌面应用程序,我会坚持使用 Swing。JavaFX/Flex/Silverlight 更适合 RIA - 富互联网应用程序。尽管我认为它们都不是长期的选择——在我看来,HTML5/CSS3/Ajax 正在赢得胜利,但这是一个相当主观的领域。但是对于桌面应用程序 - 我是 Swing 的忠实粉丝(Java Web Start 也是一种被低估的技术)
我会说 JavaFX 可以看作是 Swing 的一种扩展,它通过使用声明性编程语言开发 Java GUI 的新方法:JavaFX 脚本。JavaFX 脚本代码看起来与 JSON 脚本完全一样,这与使用 XML 语法的 Adobe Flex 或 Microsoft Silverlight 不同。
JavaFX Script 可以与 Java 交互,因此可以轻松调用 Swing 组件。它确实是新一代的 GUI API,就像 Swing 用于 AWT:漂亮的图形组件、管理布局的新简单方法、构建动态界面的非常好的特性:绑定、计时器(构建动画)等。看看这里:http://www.javafx.com/samples/和教程,看看你能多快构建一种谷歌 Picasa 应用程序...... API 甚至包含一些工具,可以轻松使用网络服务:你可以找到大量示例内置 JavaFX 的 GUI 连接到一些公共 Web 服务(如天气预报工具)。
而最好的……是部署部分。您可以将应用程序嵌入到 html 页面中,例如小程序,用户可以将应用程序拖放到她/他的桌面上,以便在她/他想要的任何时候使用它(无需返回其浏览器)!
确实,我认为 JavaFX 在其早期阶段(v1.2)是一个非常好的工具,它代表了 Java 迈向下一代应用程序的第一步:富 Internet 应用程序(RIA)。
Java Swing 是一种成熟且成熟的桌面开发技术。您将能够在网上找到大量信息和大量示例程序。但是,话虽如此,您可能需要考虑 Adobe AIR。AIR 基本上是一个运行时,可让您在桌面上运行 Flex 应用程序,并允许它们访问本地资源,例如文件系统。我已经编写 Java Swing 应用程序 10 年了,我惊讶于我使用 Flex/Adobe AIR 的效率提高了多少。Flex 的一个优点是您可以以声明方式创建 GUI,这与使用 HTML 声明网页布局的方式非常相似。这是一种指定 GUI 的更简洁的方法,并且比您需要执行相同操作的大量 Java Swing 代码更快速、更容易维护。我不会推荐 JavaFX,因为它来得太晚了,而且还没有
您应该尝试所有这些,看看哪一个最适合您的要求。如果您想了解 Flex 可以做什么以及如何操作,请查看Tour de Flex。
Flex 的一些优势在于它成熟(现在已经超过 5 年了)并且是 Adobe 的一个重要投资领域。您还可以在Adobe AIR Marketplace中找到大量使用 Flex 构建的 AIR 应用程序示例。
使用 Substance L&F,Swing 看起来不错。
但是,如果您是单独开发(而不是与团队一起开发),那么尝试 JavaFX 可能是一个好主意。
我已经对这些桌面应用程序进行了评估,最后决定选择 JavaFx。这有很好的媒体库和硬件加速图形和媒体功能。随着 Jdk 7 更新 6 及以上包含 JavaFx,我完全集成了,不需要单独安装。Java swing 是非常好的技术,并且会继续下去,但我认为 JavaFx 在某种程度上是 GUI 和 Internet 应用程序的未来。对我来说最大的优势是 JavaFx 应用程序可以转换为带有本机打包的 exe 文件
还可以尝试使用场景构建器进行拖放组件设计器
I feel that I do not have enough information to answer this question. There are many applications in which an AIR approach is a better choice, other applications use other technologies better. I am primarily an AS3/Flex developer, but I know there are many instances where one of the Java platforms is a better choice. Now that Flex is no longer an Adobe product but rather a Apache product, it will either improve the product as the users will create the roadmap, or kill it off completely.