C++/Qt与Adobe AIR的比较

14

我需要为我们的产品选择一个平台。我需要在Qt Framework和Adobe的AIR之间做出决定。我对Qt很熟悉,因为我在过去的两年中一直在使用它。我查看了Adobe的网站,但所有关于Flex、Flash、HTML/ActionScript编程能力的信息都让我感到不知所措和困惑。我无法理解Adobe生态系统的以下内容。

我有以下关于Adobe AIR的问题:

  1. 我用什么语言编写应用程序?(不仅仅是定义UI的外观)
    像在Qt中我使用C ++。是Actionscript吗?

  2. 可以说AIR只用于制作应用程序的UI吗?

  3. 随AIR一起提供哪些实用类的文档?
    例如:Qt的http://qt-project.org/doc/

  4. Qt提供了大量预制小部件供使用。 Adobe是否提供任何类似的小部件集,如果有,请问在哪里可以查看url?

  5. 我了解到Flex SDK是开源的。我可以制作商业应用并将其发布吗?Flex SDK是否提供所有东西(编译器、实用类/小部件)?

  6. AIR的许可证费用是多少?

  7. AIR中是否有类似于QT的QGraphicsView的东西?

7个回答

11

如果您需要访问大量本地库,则需要在QT环境中保留。请记住,AIR是单线程的,并在Flash Player上运行(最初设计用于基于帧的动画)。但是,根据您构建应用程序的样式,AIR可能非常适合您。

请注意,由于创建AIR应用程序的几种不同开发人员路径:1)使用html / javascript和AIR SDK,2)使用Flash / Actionscript和3)使用Flex SDK和/或Flex构建器,因此AIR可能会让人感到困惑。 最后一个在传统桌面开发背景下最具能力。

与Web服务挂钩的小型Web 2.0应用程序是AIR应用程序的好选择。类似IM客户端Digsby将很棒。到目前为止我看到的我最喜欢的AIR应用程序是Basamiq Mockups。其他有用的应用程序是TweetDeck。这些都是解决AIR非常适合的类型示例。

您应该访问Adobe Showcase并查看一些应用程序:http://www.adobe.com/products/air/showcase/

此外,如果您只是想退出C ++游戏,我相信QT现在有一些Java绑定...我记得还有一些Python绑定,但我自己从未看过。

至于QGraphicsView,人们在Flex中做了类似的事情。我现在试图谷歌但最初找不到它们,但是人们已经将诸如大型图像之类的东西,然后仅在窗口中显示当前区域。此外,在Flex的下一个版本中,他们实际上正在构建一个官方的ViewPort组件:
http://opensource.adobe.com/wiki/display/flexsdk/Gumbo+Viewport


谢谢。我们正在为孩子们制作一种视觉化编程语言。我们需要一个漂亮的GUI。我认为最好坚持使用QT并使用SVG来实现外观和感觉。 - Ankur Gupta

5
请花些时间使用这个AIR应用程序,然后问问自己Adobe Flex和AIR是否值得投资时间去学习(准备好问问自己为什么没有类似于C++/QT的东西存在): Tour de Flex Tour de Flex是一个桌面应用程序,用于探索Flex的功能和资源,包括核心Flex组件、Adobe AIR和数据集成,以及各种第三方组件、效果、皮肤等。
以下是一些问题:
  • Flex可以使用MXML和ActionScript3进行编码。AIR还支持HTML/DOM/JavaScript编程,因为webkit HTML渲染引擎内置于AIR运行时中。
  • MXML是一种XML声明式DSL,可以编译成ActionScript3命令式代码。它非常适合用于声明性地编写UI的图形表单(即MVC模式的视图)。
  • ActionScript3基于JavaScript,但已经被装饰到更像Java或C#。它具有包命名空间、类和接口继承、类成员访问保护关键字、构造函数、静态成员以及一些比Java更好的添加:属性、事件、数据绑定和闭包。

Flex样式编程也是一种依赖于异步I/O交互的单线程模型。这比多线程的Java Swing或C# .NET Winform应用程序更容易编程,但允许实现相同的程序行为结果。我在这里详细阐述了这一点:

Flex异步I/O与Java和C#显式线程


事实上,与Flash相比,Qt的组件较差。我不知道为什么会这样。 - Sohail

4

Flex是开源的,你可以免费下载SDK,没有任何许可证费用。(参见他们的FAQ

他们提供了一个名为“flex builder”的工具,它是一些定制的Eclipse,需要付费购买,但你也可以完全不使用它。

文档可以在Adobe的livedoc页面找到。(这对某些人来说已经足够讨厌Adobe了;)

我想知道,如果你熟练掌握QT,为什么要考虑其他东西?您期望AIR相比QT给您带来哪些优势?

我有一些QT和Flex的经验,但远远不足以权衡两者。我知道QT/C++比Flex/ActionScript成熟得多得多。

如果您已经了解QT,老实说,我认为学习一个新的框架(和编程语言)所花费的时间不会给您带来足够的收益...


我很好奇,如果你精通QT,为什么要考虑其他东西?你期望AIR相比QT能给你哪些优势? 只使用OSS的flex SDK是否可以制作免费的商业应用程序? - Ankur Gupta
啊,是的,QT对于商业应用需要付费,说得好 :) - Pieter
它的价格并不是非常昂贵,但他们不再在他们的公共网站上列出实际价格了(http://trolltech.com/products/appdev/pricing)。 - warren
我必须对AIR和Qt进行评估,并向管理层发送报告。 :-) - Ankur Gupta
一封电子邮件发送给他们的销售团队应该可以解决这个问题 :)此外,我相信他们宁愿花费几千美元购买Qt,而不是失去您的时间(以及其他开发人员)数月时间来学习不同的环境。 - warren
3
现在Qt可以用于商业应用,因为自从Qt4.5发布以来,它已经按照LGPL条款授权。 - Jesus Fernandez

3
我曾使用QT和Flex(虽然不怎么用Air),发现Flex更快以及在应用开发和修改方面更加便捷,而QT则提供了更多的控制能力,特别是在安装程序方面。尝试过Air应用程序安装器后,我发现它非常笨拙,但自那时以来可能已经得到改进。
Air的最大优势在于它的许多代码可以在Web页面中的Flash中运行。由于安全原因,无法从Web访问本地文件系统等内容,但几乎所有其他内容都是可移植的。

2
我做出了相反的选择。我开始使用Adobe工具,并转向QT。这样做的主要原因是Adobe框架的限制。当你使用Adobe工具时,你只能使用他们生产的工具,很难引入外部框架或库,如果不能用Adobe工具实现你想要的功能。通常,解决此问题的方法是使用套接字,将一个所谓的“独立”应用程序转换为客户端-服务器架构。此外,如果你使用许多外部工具,管理这么多不同的客户端可能会很困难。 使用QT,你可以用C++编写代码并添加任何你想要的外部框架或库。虽然有时编写它可能不容易,但是可以做到,并且没有“奇怪”的系统架构。

1

0

我赞同@Pieter的评论 - 如果你已经了解QT,转移到一个全新的环境将需要更长的时间。

QT具有跨平台和非常成熟的优势:Windows,Linux和Mac OS X都有库。我对AIR不是非常熟悉,只知道它来自Adobe,但产品网站似乎表明它是用于丰富的互联网应用程序(http://www.adobe.com/products/air/)。如果是这样,那么如果您正在开发桌面应用程序,QT将是更好的选择。


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