Java桌面应用程序的JavaFX、Swing还是Flex?

11

我大部分的桌面应用程序开发都是使用Swing,我很想听听其他人关于使用JavaFX和/或Adobe Flex来构建桌面应用程序的想法。你是否已经成功地使用这些工具来构建桌面应用程序?还是暂时仍然坚持使用Swing,并使用工具来帮助提高Swing开发的效率?


1
嗯,Flex不是Java技术。 - cletus
1
你是什么意思?Adobe Flex... - Jeff Storey
Adobe Flex是用ActionScript / MXML编写的,并编译为Flash组件。它可以与Java后端进行通信 - 但只要能通过AMF、REST或Web服务接口进行通信,它也可以与任何语言编写的后端进行通信。 - Nate
对不起,我误读了你的评论,以为你说Flex不是一种技术,而不是Java技术。我知道它不是特定于Java的,但肯定可以与Java一起使用,正如你所指出的那样,我很好奇它是否真的在Java中获得了广泛应用。 - Jeff Storey
8个回答

19
如果您正在制作桌面应用程序,我建议使用Swing。 JavaFX / Flex / Silverlight 更适合RIA-富互联网应用程序。尽管我认为它们都不是长期选择 - 在我看来,HTML5 / CSS3 / Ajax 正赢得这场战斗,但这是一个非常主观的领域。但对于桌面应用程序 - 我是Swing的忠实粉丝(同时Java Web Start是一项非常被低估的技术)。

+1,很好的回答,我大部分都同意,除了他应该坚持使用Swing。与.NET相比,Swing并不是非常先进的。我建议尝试JavaFX。 - Igor

10

我认为JavaFX可以看作是Swing的一种扩展,它使用声明式编程语言JavaFX Script来开发Java图形用户界面。与Adobe Flex或Microsoft Silverlight使用XML语法不同,JavaFX Script代码看起来就像一个JSON脚本。

JavaFX Script可以与Java进行接口,因此可以轻松调用Swing组件。它真正是GUI API的新一代,就像Swing对AWT一样:美观的图形组件,新的管理布局的简单方法,构建动态界面的很棒功能:绑定、计时器(用于构建动画)等。在这里查看:http://www.javafx.com/samples/和教程,并看看您可以多快地构建出一种Google Picasa应用程序...该API甚至包含一些工具,可以轻松使用Web服务:您可以找到许多连接到一些公共Web服务(如天气预报工具)的JavaFX GUI构建示例。

而且最好的部分...是部署部分。您可以将应用程序嵌入html页面中,就像Applet一样,用户可以将应用程序拖放到桌面上,在需要时使用它(而无需返回其浏览器)!

实际上,我认为JavaFX虽然处于早期阶段(v1.2),但是它真的是一个很好的工具,并代表了Java迈向下一代应用程序:富互联网应用程序(RIA)的第一步。


2

Java Swing是一项成熟的桌面开发技术,您可以在网上找到大量信息和示例程序。然而,您可能需要考虑Adobe AIR。AIR基本上是一个运行时环境,让您在桌面上运行Flex应用程序,并让它们访问本地资源,如文件系统。我已经使用Java Swing开发了10年的应用程序,但我惊讶于使用Flex / Adobe AIR时我的生产力有多高。Flex的一个好处是您可以声明性地创建GUI,就像使用HTML声明Web页面的布局一样。这是一种更简洁的指定GUI的方式,比起需要编写大量Java Swing代码来完成同样的工作,更快捷、更容易维护。我不建议使用JavaFX,因为它太晚进入市场并且没有真正得到主流开发人员的认可。


1
请阅读关于 this 的内容,编写极其轻量级的 Swing 应用程序,并使用相同的代码库将其移植到 Web。

请从这些链接中添加相关信息。链接经常会被移动或删除,如果发生这种情况,那么您的答案就变得无用了。 - Mike

1

你应该尝试它们全部并看哪一个最符合你的要求。如果你想知道如何使用Flex以及如何操作,请查看Tour de Flex

Flex的一些优点是它非常成熟(已经超过5年了),是Adobe公司的一个重要投资领域。在Adobe AIR Marketplace中也可以找到许多使用Flex构建的AIR应用程序示例。


1

使用Substance L&F,Swing可以看起来很好。

然而,如果你是独自开发(而不是与团队合作),尝试JavaFX可能是一个不错的选择。


0

我曾评估过这些桌面应用程序,最终决定选择JavaFx。它具有非常好的媒体和硬件加速的图形和媒体功能。从Jdk 7更新6开始,完全包含了JavaFx,无需单独安装。Java Swing是非常好的技术,并且将继续存在,但我认为JavaFx是GUI和互联网应用程序在某种程度上的未来。对我来说最大的优势是,JavaFx应用程序可以转换为本机打包的exe文件。

此外,尝试使用SceneBuilder进行拖放组件设计。


0

我觉得我没有足够的信息来回答这个问题。有许多应用程序在其中AIR方法是更好的选择,其他应用程序使用其他技术更好。我主要是AS3 / Flex开发人员,但我知道有许多情况下Java平台之一是更好的选择。现在,Flex不再是Adobe产品,而是Apache产品,它将由用户创建路线图来改进产品,或者完全淘汰它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接